小编Ket*_*tho的帖子

如何使用地图和过滤器实现列表理解?

双方mapfilter可以使用列表理解来实现:

map f xs    = [f x | x <- xs]
filter p xs = [x | x <- xs, p x] 
Run Code Online (Sandbox Code Playgroud)

我想用下面的例子来说明相反的情况:

[expr | p <- s]
Run Code Online (Sandbox Code Playgroud)

我到目前为止:

map (\p -> expr) s
Run Code Online (Sandbox Code Playgroud)

但这仅在模式匹配p成功对的所有元素时有效s。从某种意义上说,我首先要s使用与匹配的模式进行过滤p。自然地,我尝试调查这个问题,但是我没有找到不使用列表推导或LambdaCase的解决方案。

haskell functional-programming list-comprehension

5
推荐指数
1
解决办法
137
查看次数