gpt4 book ai didi

haskell - 从列表中删除奇数元素

转载 作者:行者123 更新时间:2023-12-02 21:47:44 25 4
gpt4 key购买 nike

我正在尝试创建一个短函数来从整数列表中删除奇数元素,我的代码是:

removeOdds :: [Int] -> [Int]
removeOdds lst = [ x | x <- lst, x `mod` 2]

编译器返回 -

Type error in boolean qualifier
*** Term : x `mod` 2
*** Type : Int
*** Does not match : Bool

有什么建议吗?谢谢!

最佳答案

你需要

x `mod` 2 == 0

mod 函数返回一个 Int,必须将其转换为 Bool 才能用作条件。

替代解决方案是

evens :: [Int] -> [Int]
evens xs = filter even xs

在进行 eta-reduction 后,您甚至可以将其定义为

evens :: [Int] -> [Int]
evens = filter even

尽管我建议使用限制较少的类型签名来允许所有 Integral 类型,因为 even 具有签名 Integral a => a -> Bool:

evens :: Integral a => [a] -> [a]
evens = filter even

关于haskell - 从列表中删除奇数元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19233534/

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