Discuter:Inférence de types

Un article de Wikipédia, l'encyclopédie libre.

L'article dit que le compilateur cherche le type le plus général. Cela me semble un contresens : le plus général est forcément Object ou un truc similaire. Le compilateur cherche au contraire le type le plus spécifique.

Par exemple, en Haskell :

Prelude> let i = 3
Prelude> :t i
i :: Integer

L'interpréteur a choisi le type Integer, ce qui est logique.

Prelude> let foo x = x * 2
Prelude> :t foo
foo :: (Num a) => a -> a

Ici, l'interpréteur a choisi pour x le type Num, plus général que Integer, parce que x n'est pas forcément un entier.

Si le compilateur cherchait réellement le type le plus général, il aurait choisi Num pour le premier exemple.

--Bortzmeyer 16 juin 2006 à 13:57 (CEST)