使用foldr / foldl过滤列表中的任何内容

时间:2017-11-15 19:05:13

标签: haskell maybe

我正在尝试使用List折叠实现catMaybes但不知道我应该如何开始。

我的一般想法是使用foldl并使用案例来过滤Nothing和Just。之后,相同的功能必须将找到的部分连接起来,我的代码到目前为止看起来像这样:

this is third line __label__no
this is fourth line __label__a __label__no

编译时我遇到很多错误... 我想我需要朝着正确的方向努力解决这个问题。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

Just y -> y

如果需要与[]统一,那么您应该在函数类型签名中说[Maybe [a]]。那或许你的意思是Just y -> [y]

(++) \case Nothing -> []; Just y -> y

这只是语法上的废话。我想你想要1.函数组合2.第一个参数的部分应用:

\b -> (b ++) . \case Nothing -> []; Just y -> y