下一行
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/