下一行

filterM (\x -> Just (x > 0)) [2, 1, 0, -1]


输出

Just [2,1]


和线

filterM (\x -> Just (x > 0)) []


表演

Just []


但我希望它不输出任何内容。怎样做才能引入一些适用于使用列表的所有monad函数的更改?所以我应该使用其他东西代替filterM还是可以从Maybe monad继承一些东西?

最佳答案

定义:

flatten :: Maybe [a] -> Maybe [a]
flatten Nothing   = Nothing
flatten (Just []) = Nothing
flatten x         = x


然后

flatten $ filterM (\x -> Just (x > 0)) []

关于haskell - 将“仅[]”转换为“无”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15383010/

10-11 22:33