gpt4 book ai didi

haskell - 如何使用过滤器从 Haskell 中的列表中过滤出某个数字的所有倍数

转载 作者:行者123 更新时间:2023-12-02 05:49:35 27 4
gpt4 key购买 nike

我知道我可以创建一个函数来执行此操作,但我可以使用前奏中的过滤器函数吗?例如,我可以使用

从列表中轻松过滤所有大于 3 的数字
filter (>3) [list]

但是我想要类似的东西

filter (not (.. `mod` 4 == 0)) [list]

过滤掉所有四的倍数。我把 .. 放在这里是因为我不知道那里有什么。有什么办法可以使用过滤器功能来做到这一点,还是我应该自己制作函数来做到这一点?提前致谢

最佳答案

你快到了:

filter (\n -> not (n `mod` 4 == 0)) [list]

\n 读作“lambda n”,并引入了一个匿名函数。即,给定 n 测试它是否不是 4 的倍数的函数。

否则,您可以使用“pointfree”样式,在其中组合几个函数:

filter (not . (== 0) . (`mod` 4)) [list]

函数的意思是:取输入,对4取模,然后测试结果是否等于0,最后取反。

请注意,您也可以使用 /= 0 代替 == 0 和取反。

关于haskell - 如何使用过滤器从 Haskell 中的列表中过滤出某个数字的所有倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25948784/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com