我知道我可以创建一个函数来执行此操作,但我可以使用前奏中的过滤器函数.我可以轻松过滤所有大于3的数字,例如从列表中使用
filter (>3) [list]
Run Code Online (Sandbox Code Playgroud)
但我想要类似的东西
filter (not (.. `mod` 4 == 0)) [list]
Run Code Online (Sandbox Code Playgroud)
过滤掉所有四倍的倍数.我把..放在这里,因为我不知道那里有什么.有什么方法可以使用过滤器功能这样做,还是我应该自己做功能呢?提前致谢
你几乎在那里:
filter (\n -> not (n `mod` 4 == 0)) [list]
Run Code Online (Sandbox Code Playgroud)
在\n读"拉姆达N",并介绍了一个匿名函数.即,给定n测试的函数是否不是倍数4.
否则,您可以使用"pointfree"样式,在其中组成多个函数:
filter (not . (== 0) . (`mod` 4)) [list]
Run Code Online (Sandbox Code Playgroud)
函数读取为:取输入,减去模数4,然后测试结果是否等于0,最后否定这种测试的结果.
请注意,您也可以使用/= 0而不是== 0否定.
| 归档时间: |
|
| 查看次数: |
1443 次 |
| 最近记录: |