我刚开始学习Haskell
我有一个单词列表,必须
- 删除所有单词的首字母,然后
- 删除所有以字母"a"开头的单词,
- 把剩下的单词放在一起
我设法做到了1和3,但不知道如何删除以"a"开头的单词
到目前为止,它看起来像:
concat(--remove words with a--(map (drop 1) ["Tree","House","Monkey","Haskell","Informatik"]))
谢谢你Frerich Raabe,它成功了
最好从另一个角度考虑。您希望过滤列表,以便保留不以'a'
开头的单词。您可以使用标准函数filter
来完成此操作。
filter :: (a -> Bool) -> [a] -> [a]
filter
的第一个参数是一个函数,它应该返回True
表示您想要保留的单词,返回False
表示您想要删除的单词,第二个参数是您的列表。
filter doesNotBeginWithA (... your list goes here ...)
现在您必须实现这个函数。您可以使用简单的模式匹配来做到这一点。
doesNotBeginWithA :: String -> Bool
doesNotBeginWithA xs = ...
如果您熟悉函数组合,那么使用not
来反转您的逻辑会更习惯一些。你也可以概括一下:
filter (not . beginsWith 'a') (...)
现在你必须提供这个函数:
beginsWith :: Char -> String -> Bool
beginsWith c xs = ...