我想写一个Haskell程序,计算2个给定数字之间的数字之和.我有以下代码:
sumInt :: Int -> Int -> Int
sumInt x y
| x > y = 0
| otherwise = x + sumInt x+1 y
Run Code Online (Sandbox Code Playgroud)
但是当我编译它时,我收到以下错误:
SumInt适用于太少的参数.
我不明白我做错了什么.有任何想法吗?
你需要围绕括号x+1:
| otherwise = x + sumInt (x + 1) y
Run Code Online (Sandbox Code Playgroud)
原因是函数应用程序比运算符更紧密,所以无论何时你看到
f x <> y
Run Code Online (Sandbox Code Playgroud)
这总是被解析为
(f x) <> y
Run Code Online (Sandbox Code Playgroud)
从来没有
f (x <> y)
Run Code Online (Sandbox Code Playgroud)