From: "Johan Baltié" <johan.baltie@wanadoo.fr>
To: caml-list@inria.fr
Subject: [Caml-list] Module/Functor modelisation
Date: Wed, 14 Aug 2002 08:07:53 +0100 [thread overview]
Message-ID: <20020814070753.M11217@wanadoo.fr> (raw)
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
next reply other threads:[~2002-08-14 7:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-14 7:07 Johan Baltié [this message]
[not found] ` <20020814074250.GA6002@barcelona.lrde.epita.fr>
[not found] ` <20020814074844.M48926@epita.fr>
2002-08-14 7:49 ` Fw: " Johan Baltié
[not found] ` <20020814083553.GC6002@barcelona.lrde.epita.fr>
[not found] ` <20020814083157.M89732@wanadoo.fr>
[not found] ` <20020814090548.GD6002@barcelona.lrde.epita.fr>
[not found] ` <20020814085806.M98813@wanadoo.fr>
2002-08-14 9:33 ` Yann Régis-Gianas
[not found] ` <20020814093239.M61475@wanadoo.fr>
2002-08-14 10:00 ` Yann Régis-Gianas
-- strict thread matches above, loose matches on Subject: below --
2002-08-14 6:55 Johan Baltié
2002-08-14 7:10 ` Johan Baltié
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20020814070753.M11217@wanadoo.fr \
--to=johan.baltie@wanadoo.fr \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox