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?

questionAnswers(1)

yourAnswerToTheQuestion