在这里,我可以传递f参数的功能7-1,不带括号。
Prelude> f = (+1)
Prelude> f 7-1
7
Run Code Online (Sandbox Code Playgroud)
1. 为什么以下无限递归?
Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec n-1;
Prelude> addRec 5
Run Code Online (Sandbox Code Playgroud)
2.
我可以通过添加括号来解决它n-1
Prelude> addRec :: (Eq a, Num a) => a -> a; addRec 0 = 0; addRec n = n + addRec (n-1);
Run Code Online (Sandbox Code Playgroud)
3.
或者$在整个addRec递归项上使用带括号的运算符:
Prelude> addRec :: (Eq a, Num a) => a …Run Code Online (Sandbox Code Playgroud) haskell ×1