caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Markus Mottl <markus@oefai.at>
To: Henri DF <henri.dubois-ferriere@epfl.ch>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] choosing modules at runtime
Date: Tue, 24 Sep 2002 12:08:05 +0200	[thread overview]
Message-ID: <20020924100805.GA31883@fichte.ai.univie.ac.at> (raw)
In-Reply-To: <Pine.LNX.4.44.0209241034550.15455-100000@lcavpc41.epfl.ch>

On Tuesday, 24 Sep 2002, Henri Dubois-Ferriere wrote:
> At runtime , depending on some command-line parameters, I will choose one 
> of the module implementations (they use different algorithms internally). 
[snip]
> Am I missing something obvious here? Of course what I would conceptually 
> like to do would be something like
> 
> let Mod = if (use algorithm 1) then M_1 else if (use alg 2) then M_2 ..
> 
> and then be able to call Mod.run_algo(), but that probably belies that I 
> am still thinking in an OO manner...

What you are actually looking for is first class modules, i.e. modules,
which can be passed around at runtime. This topic has already popped up a
couple of times in the past, especially since Claudio Russo implemented
them along the lines of his PhD-thesis for Moscow ML. Here is a link to
the start of such a thread:

  http://caml.inria.fr/archives/200101/msg00054.htm

Unfortunately, I haven't heard of any efforts to integrate this extension
into the main distribution of OCaml. I do indeed have quite a few
sources that would benefit from first class modules. Parameterization
of algorithms can be quite painful without.

E.g., I have a large number of modules implementing various machine
learning heuristics that all have their own concrete types and algorithms
but match the same signature. Depending on some command-line arguments
I'd like to use some of them as arguments to a functor to instantiate a
machine learning system. If I didn't use some absolutely awful workarounds
(extracting functions from modules and passing tuples of them around just
to recreate the modules elsewhere), I'd even suffer from combinatorial
explosion, because I'd have to consider the Cartesian product of all
possible functor applications.

I'd really highly appreciate some extensions to the module system that
make such things simpler...

Best regards,
Markus Mottl

-- 
Markus Mottl                                             markus@oefai.at
Austrian Research Institute
for Artificial Intelligence                  http://www.oefai.at/~markus
-------------------
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


  parent reply	other threads:[~2002-09-24 10:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-24  8:48 Henri Dubois-Ferriere
2002-09-24  9:36 ` Andreas Rossberg
2002-09-24 10:37   ` Markus Mottl
2002-09-24 10:08 ` Markus Mottl [this message]
2002-09-24 10:18 ` Olivier Andrieu
2002-09-24 17:24   ` Sven LUTHER
2002-09-24 10:42 ` Yamagata Yoriyuki
2002-09-24 12:43 ` Alessandro Baretta
2002-09-24 12:55   ` Maxence Guesdon
2002-09-24 10:40 Sebastien.deMentendeHorne
2002-09-24 11:00 ` Markus Mottl
2002-09-24 11:09 Sebastien.deMentendeHorne
2002-09-24 11:41 ` Markus Mottl
2002-09-30  7:28   ` John Max Skaller
2002-10-02 13:04     ` Alessandro Baretta
2002-10-02 13:28       ` Dave Mason
2002-10-02 20:57         ` Chris Hecker

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=20020924100805.GA31883@fichte.ai.univie.ac.at \
    --to=markus@oefai.at \
    --cc=caml-list@inria.fr \
    --cc=henri.dubois-ferriere@epfl.ch \
    /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;
as well as URLs for NNTP newsgroup(s).