O significado de til nos tipos Haskell (igualdade de tipo)
Eu tenho mexido com ofix
função, e eu deparei com isso:
λ 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 (+)
Eu sei muito bem por que esse erro está ocorrendo, mas notei uma assinatura de tipo engraçado lá em cima:t ~ t -> t
. O que esse tipo significa? O que significa til nas assinaturas de tipo no haskell? Onde eles são usados?