bim*_*mmo 3 haskell compilation
其他问题和问题虽然相似,但并不像这个.在这个特定的编译器错误中,Haskell GHC将不会编译以下代码,原因如下.我根本不明白 - 代码很简单.
--factorial
fact :: int -> int
fact 0 = 1
fact n | n > 0 = n * fact(n - 1)
main = print (fact 10)
Run Code Online (Sandbox Code Playgroud)
(错误:)
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)
Run Code Online (Sandbox Code Playgroud)
你能解释一下这个问题吗?
Int 是你想要的:
fact :: int -> int
Run Code Online (Sandbox Code Playgroud)
- >
fact :: Int -> Int
Run Code Online (Sandbox Code Playgroud)
因为在Haskell中,类型需要以cap开头.
编辑:感谢Yuras对此发表评论:
或者如果你想要,你可以使用类型类:
fact :: Integral a => a -> a
Run Code Online (Sandbox Code Playgroud)
您可以根据需要为类型变量命名,包括int.此外,Num如果您想要将阶乘定义为一般数字,则可能更适合您的目的.
| 归档时间: |
|
| 查看次数: |
2415 次 |
| 最近记录: |