gpt4 book ai didi

haskell - 在 Haskell 中获取 int 或整数之和

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

此函数应该适用于 Int 列表和 Integer 列表:

myFunc :: [Integer] -> [Char]
myFunc x = if (sum x `mod` 2 ==1) then "odd" else "even"

但它仅适用于整数列表。

最佳答案

类型类提供了一种通用类型的方法(它们实际上是类型组)。您可以使用类型类约束来代替显式类型Integer,如下所示:

myFunc :: Integral a => [a] -> String
myFunc x = if (even (sum x)) then "even" else "odd"

这将指定它是一个从 [a]String 的函数,其中 a 是类型变量,并且受到约束可以是任何类型,只要它是 Integral 类型类的成员即可。另一种说法是任何类型,只要它具有 Integral 类型类的实例。这意味着它具有为该特定类型指定的类型类方法。

Integral 类型类适用于值为整数(即​​积分)的类型。

幸运的是,IntInteger 都为 Integral 提供了一个实例,因此我们可以使用它。

关于haskell - 在 Haskell 中获取 int 或整数之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45395776/

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