Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: "Yaron M. Minsky" <yminsky@cs.cornell.edu>
To: "Sami Mäkelä" <sajuma@utu.fi>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Functorizing large collections of modules
Date: 19 Mar 2002 18:27:36 -0500	[thread overview]
Message-ID: <1016580458.10273.46.camel@dragonfly.localdomain> (raw)
In-Reply-To: <3C95E312.28961EEF@utu.fi>

The solution suggested below clearly works, but it's just as clearly a
bit of a hack.  My feeling is that this is a bit of a fundamental
weakness of ocaml and the module/functor system.  OCaml is generally too
module-centric, in that structuring tools are available only up to the
level of modules, and there is no good structure beyond that.

Another example of this weakness is the lack of support for namespaces. 
Again, you can hack namespaces into existence by tossing lots of modules
in the same file, but that's clearly a bad solution.

Do any of the other MLs fare better in this department?  And do people
have good solutions for the namespace problem or the large-scale functor
problem I outlined earlier?

y

On Mon, 2002-03-18 at 07:52, Sami Mäkelä wrote:
> "Yaron M. Minsky" wrote:
> > > > Conceptually what I want is a single structure like this:
> > > >
> > > > module Library(ZZp:ZZpSig) =
> > > > struct
> > > >
> > > >   module Foo =
> > > >   struct ... end
> > > >
> > > >   module Bar =
> > > >   struct ... end
> > > >
> > > >   ...
> > > >
> > > > end
> 
> what i have used is:
> 
> foo.ml:
> 
> module Library (ZZp:ZZpSig) =
> struct
>   module Foo = struct ... end
> end
> 
> bar.ml:
> 
> module Library (ZZp:ZZpSig) =
> struct
>   include Foo.Library (ZZp)
>   module Bar = struct ... end
> end
> 
> quux.ml:
> 
> module Library (ZZp:ZZpSig) =
> struct
>   include Bar.Library (ZZp)
>   module Quux = struct ... end
> end
> 
> etc.
> 
> there are still few problems, but perhaps this is good enough
> 
> 
> > > >
> > > > That way, all the interior modules (Foo, Bar) get to reference the same
> > > > ZZp, without having to functorize the individual modules.  So, what I'd
> > > > like is to be able to do this without sticking the modules Foo and Bar
> > > > into the same single large unmanageable file.
> -------------------
> 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
> 
-- 
|--------/            Yaron M. Minsky              \--------|
|--------\ http://www.cs.cornell.edu/home/yminsky/ /--------|

Open PGP --- KeyID B1FFD916 (new key as of Dec 4th)
Fingerprint: 5BF6 83E1 0CE3 1043 95D8 F8D5 9F12 B3A9 B1FF D916

-------------------
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


  reply	other threads:[~2002-03-19 23:27 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-18  4:09 Yaron M. Minsky
2002-03-18  9:01 ` Remi VANICAT
2002-03-18 12:19   ` Yaron M. Minsky
2002-03-18 12:52     ` Sami Mäkelä
2002-03-19 23:27       ` Yaron M. Minsky [this message]
2002-03-19 23:44         ` Fermin Reig
2002-03-20  9:09         ` Francois Pottier
2002-03-20 11:24           ` Alain Frisch
2002-03-20 12:59             ` Yaron M. Minsky

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=1016580458.10273.46.camel@dragonfly.localdomain \
    --to=yminsky@cs.cornell.edu \
    --cc=caml-list@inria.fr \
    --cc=sajuma@utu.fi \
    /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