I ont défini trois fonctions qui haskell multiplier deux nombressignature de type de fonctions dans Haskell
k = \x y -> x * y
foo y = \x -> x * y
bar x = \x -> x * x
Mais je reçois des signatures différentes pour toutes les trois fonctions.
λ> :t k
k :: Integer -> Integer -> Integer
λ> :t foo
foo :: Num a => a -> a -> a
λ> :t bar
bar :: Num a => t -> a -> a
Quelqu'un peut-il expliquer pourquoi c'est ainsi? Je peux voir t dans la signature de type de barre. est-il différent de l'utilisation normale de a, b, ou a1, a2 etc.