Browse thread
types recursifs ...
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 1997-04-29 (17:44) |
From: | Didier Rousseau <Didier.Rousseau@c...> |
Subject: | Re: types recursifs ... |
bonjour a tous, Sven LUTHER nous a ecrit : <j'ai quelques petit problemes avec les types recursifs. <... < type 'a t = Int | Bool | Arrow of 'a * 'a < < let rec viewt = function < | Int -> print_string "Int" < | Bool -> print_string "Bool" < | Arrow (l, r) -> viewt r; print_string " -> "; viewt l <... le sens que l'on peut deduit de votre fonction "viewt" ne correspond pas au type defini "'a t" dans le dernier cas de filtrage : | Arrow (l, r) -> viewt r; print_string " -> "; viewt l le typeur deduit que "l" et "r" sont du meme type que l'arg de "viewt" : 'a t puisque le filtrage porte sur ce type Or si par la suite on defini un type "tt" tel que : type tt == int t;; alors Arrow(x,y), de type int t, ou x et y sont des int le type recursif que vous auriez du definir etait : type 'a t = Int | Bool | Arrow of 'a t * 'a t mais dans ce cas quel est l'interet du 'a ?? Didier Rousseau droussea@cnam.fr