Voici une petite extension de syntaxe pour Ocaml (donc écrite avec camlp4) permettant de déclarer explicitement les types des fonctions, mais avec une syntaxe inspirée de celle de Haskell.
En Ocaml, la façon classique de déclarer un type est la suivante :
let f (x: int) (y: int) : int = x + y
On déclare ainsi une fonction prenant deux arguments de type int et renvoyant un entier.
En Haskell vous feriez ça de la façon suivante:
f :: Int -> Int -> Int f x y = x + y
Les deux approches ont leur avantages et leurs inconvénients, mais personnellement, je trouve la façon haskellienne plus lisible. Voici donc ce que permet l’extension de syntaxe pa_declare:
declare f : int -> int -> int [...] let f x y = x + y
L’intérêt majeur est de pouvoir séparer la déclaration de type de la définition. Évidemment, c’est à ça que servent les fichiers d’interface d’un module (.mli) mais on peut ici déclarer le type de fonctionz qui ne sont pas exportées. Je ne pense pas que ce soit très utile pour les rares cas où on a besoin de noter explicitement un type pour éviter des problèmes lors de l’inférence, non, ça me permet surtout intéressant à des fins de documentation: un lecteur n’a pas à refaire à la main l’inférence de type pour connaître le type d’une fonction. Et contrairement à des commentaires, le typage nous garantit que les <code>declare</code> seront toujours en phase avec le code.
Un dépôt darcs est disponible ici : http://chadok.info/darcs/pa_declare
0 Responses
Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.