删除List的元素(Haskell)



我刚开始学习Haskell

我有一个单词列表,必须

  1. 删除所有单词的首字母,然后
  2. 删除所有以字母"a"开头的单词,
  3. 把剩下的单词放在一起

我设法做到了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 = ...

最新更新