我在使用这个程序时遇到了麻烦.
filterJust :: [Maybe a] -> [a]
filterJust [] = []
filterJust x = map fromJust (filter (isJust) x)
Run Code Online (Sandbox Code Playgroud)
但是ghci不断报道这个
编辑:
我不想使用任何额外的模块,所以我这样做:
filterJust :: [Maybe a] -> [a]
filterJust x = map unpack (filter (Nothing /=) x)
unpack (Just a) = a
Run Code Online (Sandbox Code Playgroud)
我收到了这条消息
而且我不明白为什么.我应该可以使用Eq函数而无需导入anthing吗?
She*_*rsh 17
你不需要写filterJust函数.它已经存在base并被称为catMaybes:http://hackage.haskell.org/package/base-4.9.0.0/docs/Data-Maybe.html#v : catMaybes
此外,您可以看到更好的方法来定义此功能:
catMaybes :: [Maybe a] -> [a]
catMaybes ls = [x | Just x <- ls]
Run Code Online (Sandbox Code Playgroud)
所以你需要做的就是添加import Data.Maybe (catMaybes)到你的模块中.
| 归档时间: |
|
| 查看次数: |
3396 次 |
| 最近记录: |