From: Alain Frisch <alain@frisch.fr>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Wanted: your feedback on the hierarchy of OCaml Batteries Included
Date: Tue, 18 Nov 2008 23:07:33 +0100 [thread overview]
Message-ID: <49233CA5.6080100@frisch.fr> (raw)
In-Reply-To: <200811181817.23216.jon@ffconsultancy.com>
On 11/18/2008 7:17 PM, Jon Harrop wrote:
> I don't follow. Can you not use "include" to extend an existing module:
>
> # module Array = struct
> include Array
> let empty = [||]
> end;;
> module Array :
> sig
> external length : 'a array -> int = "%array_length"
> ...
> val empty : 'a array
> end
In addition to this being non-modular, this extension scheme does not
work well with hiararchy as it forces you to mention all the siblings of
the ancestors of the module you want to extend.
E.g. if you start from:
module M = struct
module M1 = struct
module M11 = struct ... end
module M12 = struct ... end
module M13 = struct ... end
...
end
module M2 = struct
...
end
module M3 = struct
...
end
...
end
and you want to extend M11, you need to write:
module M' = struct
module M1 = struct
module M11 = struct include M.M1.M11 (* extension here *) end
module M12 = M.M1.M12
module M13 = M.M1.M13
...
end
module M2 = M.M2
module M3 = M.M3
...
end
Frankly, I don't think that having a nice and well-organized hierarchy
of modules really matters. Things like having uniform interfaces,
consistent idioms and compatible types across libraries seem much more
important to me. Anyway, if a hierarchy is desired, I fail to see any
advantage of using "." instead of e.g. "_" (easily extensible + does not
force you to link everything).
-- Alain
next prev parent reply other threads:[~2008-11-18 22:07 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-18 9:56 David Teller
2008-11-18 10:06 ` [Caml-list] " Richard Jones
2008-11-18 10:21 ` Zheng Li
2008-11-18 11:22 ` David Teller
2008-11-18 12:52 ` Zheng Li
2008-11-18 14:10 ` [Caml-list] " Alain Frisch
2008-11-18 14:19 ` David Teller
2008-11-19 3:06 ` Yaron Minsky
2008-11-19 3:47 ` Till Varoquaux
2008-11-19 10:57 ` Stefano Zacchiroli
2008-11-19 18:05 ` Stéphane Glondu
2008-11-20 0:14 ` Stefano Zacchiroli
2008-11-18 10:29 ` [Caml-list] " Erkki Seppala
2008-11-18 11:34 ` Daniel Bünzli
2008-11-18 11:47 ` Thomas Gazagnaire
2008-11-18 12:15 ` David Teller
2008-11-18 12:32 ` Richard Jones
2008-11-18 12:56 ` David Teller
2008-11-19 13:38 ` Stefano Zacchiroli
2008-11-19 17:37 ` Richard Jones
2008-11-23 10:32 ` Stefano Zacchiroli
[not found] ` <9b415f950811180428x2de94a64q6fa92887f8e00705@mail.gmail.com>
2008-11-18 12:51 ` David Teller
2008-12-19 11:00 ` Benedikt Grundmann
2009-01-05 10:40 ` David Teller
2008-11-18 13:24 ` Daniel Bünzli
2008-11-18 14:46 ` David Teller
2008-11-18 12:40 ` David Teller
2008-11-18 13:31 ` Dario Teixeira
2008-11-18 14:23 ` David Teller
2008-11-18 14:40 ` Stefano Zacchiroli
2008-11-19 13:36 ` Stefano Zacchiroli
2008-11-19 14:28 ` Daniel Bünzli
2008-11-19 14:45 ` Paolo Donadeo
2008-11-21 12:37 ` Michaël Le Barbier
2008-11-18 11:17 ` David Teller
2008-11-18 12:22 ` Richard Jones
2008-11-18 12:49 ` David Teller
2008-11-18 15:20 ` Richard Jones
2008-11-18 18:17 ` Jon Harrop
2008-11-18 17:51 ` Nicolas Pouillard
2008-11-18 22:43 ` Jon Harrop
2008-11-18 18:59 ` Richard Jones
2008-11-18 20:17 ` Jon Harrop
2008-11-18 19:22 ` Richard Jones
2008-11-18 19:50 ` Daniel Bünzli
2008-11-18 21:50 ` Richard Jones
2008-11-19 13:48 ` Stefano Zacchiroli
2008-11-19 19:02 ` Stéphane Glondu
2008-11-18 22:07 ` Alain Frisch [this message]
2008-11-18 23:49 ` Jon Harrop
2008-11-18 23:13 ` Alain Frisch
2008-11-19 13:28 ` Stefano Zacchiroli
2008-11-18 23:30 ` Jon Harrop
2008-11-19 6:29 ` David Teller
2008-11-19 8:36 ` Jon Harrop
2008-11-19 9:46 ` Paolo Donadeo
2008-11-19 20:11 ` Maxence Guesdon
2008-11-20 9:28 ` Nicolas Pouillard
2008-11-20 10:33 ` Richard Jones
2008-11-20 10:49 ` open Module (not?) considered harmful Stefano Zacchiroli
2008-11-20 11:29 ` [Caml-list] " David Allsopp
2008-11-20 11:48 ` Richard Jones
2008-11-20 17:56 ` Stefano Zacchiroli
2008-11-20 13:01 ` Nicolas Pouillard
2008-11-20 13:41 ` Nicolas Pouillard
2008-11-20 16:44 ` Stefano Zacchiroli
2008-11-21 2:56 ` Stability of exceptions Eliot Handelman
2008-11-21 7:39 ` [Caml-list] " Daniel Bünzli
2008-11-21 9:52 ` Christophe TROESTLER
2008-11-20 14:46 ` [Caml-list] open Module (not?) considered harmful Ashish Agarwal
2008-11-20 17:54 ` Stefano Zacchiroli
2008-11-20 11:31 ` Daniel Bünzli
2008-11-23 10:36 ` Stefano Zacchiroli
2008-11-20 11:41 ` Richard Jones
2008-11-23 10:38 ` Stefano Zacchiroli
2008-11-23 11:01 ` Richard Jones
2008-11-20 12:58 ` [Caml-list] Wanted: your feedback on the hierarchy of OCaml Batteries Included Nicolas Pouillard
2008-11-20 21:12 ` David Teller
2008-11-20 23:18 ` Daniel Bünzli
2008-11-21 9:34 ` David Teller
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=49233CA5.6080100@frisch.fr \
--to=alain@frisch.fr \
--cc=caml-list@yquem.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