Caml est fortement et statiquement typé. Cela lui permet d'oublier presque totalement les types des valeurs lors de l'exécution. Presque, parce qu'il reste un peu d'information pour que le runtime (notamment le garbage collector) puisse s'y retrouver.
Quant tu dis 'faire mumuse 10 secondes' j'ai l'impression que tu parles du toplevel (aka interpréteur, aka REPL). Le toplevel fonctionne en fait comme un compilateur incrémentiel : quand tu tapes un truc dedans, c'est parsé, typé puis évalué. Le toplevel garde les informations de types pour les entrées suivantes mais lors de la phase d'évaluation tout se passe comme pour les programmes compilés, il n'y a pas d'information de type utilisée à l'exécution.
Sinon tu parles peut-être du polymorphisme paramétrique. Typage statique n'est pas du tout incompatible avec polymorphisme paramétrique (ie les valeurs du genre 'une liste de n'importe quoi'). On peut travailler aved une telle liste (compter ses éléments, extraire des éléments, etc.) mais on ne peut rien faire avec les éléments eux-mêmes car on ne possède aucune information à leur sujet.
[^] # Re: Cool ca
Posté par Vivi . En réponse au journal histoires de typage. Évalué à 4.
Quant tu dis 'faire mumuse 10 secondes' j'ai l'impression que tu parles du toplevel (aka interpréteur, aka REPL). Le toplevel fonctionne en fait comme un compilateur incrémentiel : quand tu tapes un truc dedans, c'est parsé, typé puis évalué. Le toplevel garde les informations de types pour les entrées suivantes mais lors de la phase d'évaluation tout se passe comme pour les programmes compilés, il n'y a pas d'information de type utilisée à l'exécution.
Sinon tu parles peut-être du polymorphisme paramétrique. Typage statique n'est pas du tout incompatible avec polymorphisme paramétrique (ie les valeurs du genre 'une liste de n'importe quoi'). On peut travailler aved une telle liste (compter ses éléments, extraire des éléments, etc.) mais on ne peut rien faire avec les éléments eux-mêmes car on ne possède aucune information à leur sujet.