过滤 [Maybe a] 并丢弃 Nothing 值

Jiv*_*van 4 haskell list filter maybe map-function

使用列表Maybe a,如何过滤并仅获取列表中不是的元素Nothing

-- input
pas = [Just 3, Just 1, Just 5, Just 9, Nothing, Just 10, Nothing] :: [Maybe Int]

-- expected output
new_pas = [3, 1, 5, 9, 10]
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的使用方式map和查看方式,mapMaybe但找不到正确的组合。

Rob*_*ond 5

除了您找到的简单列表理解之外,已经有一个库函数:catMaybes

请注意,您不仅可以在 Hoogle 中搜索名称,还可以搜索类型签名 - 这在许多情况下非常有用。在这里输入直接[Maybe a] -> [a]给你catMaybes。(忏悔:我忘记了函数的名称,但知道它存在,刚刚发现它就是这样!)