我刚开始学习 Haskell 。
我有一个单词列表,必须
我设法做了1和3,但无法弄清楚如何删除以“a”开头的单词
到目前为止看起来像:
concat(--remove words with a--(map (drop 1) ["Tree","House","Monkey","Haskell","Informatik"]))
谢谢Frerich Raabe,它有效
答案 0 :(得分:7)
最好从另一个角度考虑它。您希望过滤列表,以便保留不以'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 = ...