Uther (./32) :
J'aimerai bien avoir un exemple parceque j'ai du mal a voir en quoi ca aide au polymorphisme.
Mouais que ça "aide" c’est un bien grand mot, je voulais juste dire que tu peux vouloir ne pas préciser le type d’une variable pour le laisser ouvert (n’importe quel type donc), mais évidemment rien n’empêche d’utiliser explicitement des variables de type. Ce qui a un intérêt c’est de pouvoir dire d’une façon ou d’une autre « on ne sait pas quel est le type de la variable » (comme ça on est sûr que la fonction est polymorphe). Bon en java tu peux lui donner le type Object par exemple mais c’est un type qui n’est pas significatif (et c’est quand même plus ou moins une manière de masquer le "vrai" type de la variable).
Uther (./32) :
Pour moi a partir du moment ou tu laisse la machine te donner ton type, c'est que tu ne maitrise plus ce que tu fais.
Ben je ne vois pas trop le problème (la machine ne décide pas à ta place du type, elle *calcule* le type principal de l’expression, de toute façon il n’y a pas le choix, sauf si tu veux volontairement perdre de l’information auquel cas tu as toujours la possibilité de donner explicitement un type moins précis ou moins polymorphe).
Normalement tu attends un certain type pour ce que tu écris, si l’ordinateur t’en donne un autre c’est généralement que tu as fait une erreur, mais tu peux faire une erreur même en ayant déclaré le type (elle ne se manifestera juste pas exactement de la même façon), je ne vois pas en quoi tu maîtrises moins.
Sinon il faut voir aussi que l’inférence est surtout intéressante dans un langage où on a une algèbre de types un tant soit peu complexe (où on peut donc avoir des types qui prennent plusieurs lignes le cas échéant, par opposition à un langage comme java où la complexité va rarement au-delà d’un generic avec un ou deux paramètres), en particulier avec des fonctions polymorphes ou d’ordre supérieur. Ce n’est pas par hasard que ça existe depuis la nuit des temps dans les langages fonctionnels.
Évidemment si toutes tes variables sont des int ça ne t’est pas forcément utile
