给出列表清单:
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)
是否有更具表现力的方式来做同样但代码更少?
evenHaskell中有一个内置函数,你也可以使用Blunt获得转换为无点样式的帮助.这给你:
filter even . concat . filter ((> 2) . length)
Run Code Online (Sandbox Code Playgroud)