Haskell - 类型类

use*_*437 2 haskell symbols function typeclass

我是Haskell的新手,我正在尝试学习类型类的工作原理.我在GHCi编译器中输入以下代码.

let (+) :: Num a => a -> a -> a;
(+) a b = a+b;
Run Code Online (Sandbox Code Playgroud)

代码编译,但每当我调用该函数时,它就会卡住,我必须按ctrl + c来停止进程.

我在这里做错了吗?先感谢您!

Ben*_*Ben 8

你已经定义a + b为等于a + b(中+缀运算符也可以写成(+),在这种情况下它表现为普通的前缀函数;但你的左侧仍然是你的右侧).

因此,解释器正在永远旋转,以便评估a + b它然后需要评估a + b,然后需要评估a + b,等等.


ber*_*eal 7

你是递归地+从你的函数中调用你的函数+,就像你写的那样:

add :: Num a => a -> a -> a
add a b = add a b
Run Code Online (Sandbox Code Playgroud)