Haskell:如何过滤列表列表?

bar*_*ara 1 haskell

给出列表清单:

xss = [[1,2,3],[4,5,6],[7,8]]
Run Code Online (Sandbox Code Playgroud)

我想按列表大小然后用余数过滤它,然后返回一个Int列表.

这是我的两次尝试:

concat [[x | x <- xs, mod x 2 == 0] | xs <- xss, length xs > 2]

filter (\x -> mod x 2 == 0) $ concat $ filter (\x -> length x > 2) xss
Run Code Online (Sandbox Code Playgroud)

是否有更具表现力的方式来做同样但代码更少?

Kar*_*ldt 5

evenHaskell中有一个内置函数,你也可以使用Blunt获得转换为无点样式的帮助.这给你:

filter even . concat . filter ((> 2) . length)
Run Code Online (Sandbox Code Playgroud)