我一直在搞乱这个fix
功能,我碰巧遇到了这个:
λ let fix f = let x = f x in x
λ fix (+)
<interactive>:15:5:
Occurs check: cannot construct the infinite type: t ~ t -> t
Expected type: t -> t
Actual type: t -> t -> t
Relevant bindings include it :: t (bound at <interactive>:15:1)
In the first argument of ‘fix’, namely ‘(+)’
In the expression: fix (+)
我完全知道为什么会发生此错误,但我注意到那里有一个有趣的类型签名:t ~ t -> t
. 这种类型是什么意思?波浪号在haskell中的类型签名中是什么意思?它们在哪里使用?