Date: Tue, 12 Jan 1999 18:29:19 +0100
From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: Markus Mottl <mottl@miss.wu-wien.ac.at>, OCAML <caml-list@inria.fr>
Subject: Re: Using modules and classes recursively
In-Reply-To: <199901092024.VAA15046@miss.wu-wien.ac.at>; from Markus Mottl on Sat, Jan 09, 1999 at 09:24:39PM +0100
> Is it impossible to have modules and classes combined recursively?
Currently, yes. A module definition cannot be mutually recursive with
any other definition (type, class, or another module). This raises a
number of difficult typechecking and compilation problems that are
still largely open. I agree this is probably the most irritating
restriction of ML modules.
> If yes, what would be a good workaround?
I'm afraid you just have to define your own "set" type, without using
the Set.Make functor. E.g.
type 'a myset = Empty | Node of myset * 'a * myset
(* an efficient implementation of myset can easily be
lifted from the sources of the "Set" standard library
module *)
class foo =
object
method bar = (... : foo myset)
...
end
This isn't very satisfactory, but I'm afraid we can't do better until
recursive modules are better understood.
Regards,
- Xavier Leroy
This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:17 MET