gpt4 book ai didi

haskell - 没有因使用 `>' 而产生 (Ord int) 的实例,Haskell

转载 作者:行者123 更新时间:2023-12-02 10:06:48 27 4
gpt4 key购买 nike

其他问题虽然类似,但与这个不太一样。在这个特定的编译器错误中,Haskell GHC 不会编译以下代码,原因如下。我根本不明白 - 代码非常简单。

--factorial

fact :: int -> int
fact 0 = 1
fact n | n > 0 = n * fact(n - 1)

main = print (fact 10)

(错误:)

No instance for (Ord int) arising from a use of `>'
Possible fix:
add (Ord int) to the context of
the type signature for fact :: int -> int
In the expression: n > 0
In a stmt of a pattern guard for
an equation for `fact':
n > 0
In an equation for `fact': fact n | n > 0 = n * fact (n - 1)

你能向我解释一下这个问题吗?

最佳答案

Int 就是你想要的:

fact :: int -> int

-->

fact :: Int -> Int

由于在 Haskell 中,类型需要以上限开头。

编辑:感谢 Yuras 对此发表评论:

或者,如果您愿意,可以使用类型类:

fact :: Integral a => a -> a

您可以根据自己的喜好命名类型变量,包括int。此外,如果您想定义一般数字的阶乘,Num 可能更适合您的目的。

关于haskell - 没有因使用 `>' 而产生 (Ord int) 的实例,Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17376071/

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