Date: Tue, 18 Nov 1997 14:52:14 +0100
From: Emmanuel Engel <Emmanuel.Engel@lri.fr>
To: Vyskocil Vladimir <vyskocil@math.unice.fr>
Subject: Re: Modules mutuellement recursifs ?
Si je comprend bien le but est d'ecrire
let rec f x = if x = 0 then 0 else g (x - 1)
and g x = if x = 0 then 1 else f (x - 1);;
en mettant chacune de ces fonctions dans un module different.
Je suis a peut pres sur qu'il n'est pas possible d'ecrire
des modules mutuellement recursifs. Sans aller jusqu'a tout
mettre directement dans un meme fichier, il est posssible de
faire le bricolage suivant (qui peut etre reparti dans
plusieurs fichiers dictincts):
module M
(M1:sig val f: (int -> int) -> int -> int end)
(M2:sig val g: (int -> int) -> int -> int end) =
struct
let rec f' x = M1.f g' x
and g' x = M2.g f' x
module M1 =
struct
let f = f'
end
module M2 =
struct
let g = g'
end
end;;
module M1' =
struct
let f g' x = if x = 0 then 0 else g' (x - 1)
end;;
module M2' =
struct
let g f' x = if x = 0 then 1 else f' (x - 1);;
end;;
module MM1M2 = M(M1')(M2');;
module M1 = MM1M2.M1;;
module M2 = MM1M2.M2;;
--- Emmanuel Engel
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:12 MET