From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id JAA07807; Wed, 14 Aug 2002 09:07:55 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id JAA07802 for ; Wed, 14 Aug 2002 09:07:55 +0200 (MET DST) Received: from mel-rto6.wanadoo.fr (smtp-out-6.wanadoo.fr [193.252.19.25]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id g7E77s124370 for ; Wed, 14 Aug 2002 09:07:54 +0200 (MET DST) Received: from mel-rta8.wanadoo.fr (193.252.19.79) by mel-rto6.wanadoo.fr (6.5.007) id 3D49FD97004BBC7B for caml-list@inria.fr; Wed, 14 Aug 2002 09:07:54 +0200 Received: from AlphaSystem.dnsalias.net (80.11.74.121) by mel-rta8.wanadoo.fr (6.5.007) id 3D49FF790045104A for caml-list@inria.fr; Wed, 14 Aug 2002 09:07:54 +0200 Received: from localhost ([127.0.0.1] helo=alphasystem.dnsalias.net) by AlphaSystem.dnsalias.net with esmtp (Exim 3.36 #1 (Debian)) id 17esG1-0006sx-00 for ; Wed, 14 Aug 2002 09:07:53 +0200 From: "Johan Baltié" To: caml-list@inria.fr Subject: [Caml-list] Module/Functor modelisation Date: Wed, 14 Aug 2002 08:07:53 +0100 Message-Id: <20020814070753.M11217@wanadoo.fr> X-Mailer: Open WebMail 1.61 20020204 X-OriginatingIP: 192.6.2.192 (baltie_j) MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hi ! I have a simple functor: module type Used = sig type output val toto : int -> output -> output val tutu : double -> output -> output end module type User = functor (U : Used) -> sig val toto : int -> U.output -> U.output val tutu : double -> U.output -> U.output end And User is implemented by two types doing mostly the same things with different init, and with recursive and/or mutual call in toto an tutu. I'd like to factorize the shared code, BUT the recursive call prevent me of doing this. Here an implementation example of the part where the problem lie: module User1: User = functor (U : Used) -> struct let toto i output = let val = U.tutu 12.0 output in tutu 12.0 val let rec tutu d output = if (d = 11.0) then output else tutu (d -. 1.0) (U.toto 1 output) end module User2: User = functor (U : Used) -> struct let toto i output = let val = tutu 12.0 output in U.tutu 12.0 val let rec tutu d output = if (d = 11.0) then output else let val = tutu (d -. 1.0) output in U.toto 1 val end Basicly I once do things in a Prefix way, and once in a postfix way. I would like to call in User toto and tutu function like: let toto i data = Used.tutu 12.0 data let tutu d output = User.tutu (d -. 1.0) output My problem lays here. I cannot now which User.tutu to call. If I try to make a functor that do take a User module, there is a recursion problem as this functor will need a User module and the user module will need this functor to be able to call the helping functions ! It's gaving me headache.... I know this explanation is not really clear, but I tried to simplify my problem in order to explain it and I fear people won't see any usefullness in my needs. Thanks in advance Ciao Jo ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners