Instant de lumière
Par Gabriel Kerneis le vendredi 29 décembre 2006, 12:24 - Inclassables - Lien permanent
Je viens de franchir un cap. J'ai compris la translation de type dans OCamlduce. C'était pourtant pas dur. Suffisait de lire la doc. Comme d'hab quoi.
Bon, pour les gens déraisonnablement curieux, le point crucial est le suivant (extrait du manuel d'OCamlduce) :
# let f (x : {{ Int }}) = {{ x + 1 }} in List.map f {: [ 1 2 3 ] :};;
- : {{Int}} list = [{{2}}; {{3}}; {{4}}]In this example, the result type of the translation is inferred to be {{ Int }} list (because the type for f is given). The corresponding x-type is {{ [Int*] }}.
Donc je résume : d'une part, utiliser la bonne syntaxe (forcément, {{ ... }} au lieu de {: ... :} ça ne fonctionne pas) ; d'autre part, indiquer explicitement le type de la fonction appliquée pour que l'inférence de types ne se prenne pas les pieds dans le tapis.
Bon, bah on va pouvoir commencer à coder...


Commentaires
Hum... j'ai pas le temps de faire des recherches, mais l'inférence de type, elle est pas censée *inférer* les types au lieu qu'on les lui donne sur un plateau ?