À moins d'une inattention de ma part, le manuel officiel, au chapitre 6.4, passe totalement sous silence cette construction de type :
En jouant un peu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 poly-typexpr ::= typexpr | { 'ident }+ . typexpr
Il semble que cette notation corresponde à la notion de quantification universelle de type.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 # type func = {f:'a.('a -> 'a)};; type func = { f : 'a. 'a -> 'a; } # {f=fun x -> x};; - : func = {f = <fun>}
Evidemment, dans mon exemple ci-dessus il est impossible que f soit autre chose que l'identité.
Dans ces conditions, on peut se demander:
- où trouver de la documentation sur la quantification universelle de type en Ocaml ?
- cette fonctionnalité a-t-elle une possible utilité en dehors de la POO à la sauce OCaml ?
- si oui alors quel genre de problème cette construction est-elle sensée résoudre ?
Partager