caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Ashish Agarwal" <agarwal1975@gmail.com>
To: "Caml List" <caml-list@inria.fr>
Subject: Re: [Caml-list] open Module (not?) considered harmful
Date: Thu, 20 Nov 2008 09:46:04 -0500	[thread overview]
Message-ID: <d8be5ae20811200646m583371a0w3375ac3bc16f2073@mail.gmail.com> (raw)
In-Reply-To: <000001c94b03$4f55d4e0$ee017ea0$@com>

[-- Attachment #1: Type: text/plain, Size: 2805 bytes --]

> Consider
>
> open Array;;
> open List;;

I doubt anyone is recommending this. The module design dictates, to some
extent, whether the module should be opened. Array and List clearly should
not since they have commonly used function names. However, the proposed
Data.Containers certainly should be opened. There is no confusion about
private names in this case. If I am using Batteries, it will be clear which
module "List" refers to. The bureaucracy of writing open statements at the
top of every file would get cumbersome, but that can be avoided by the
proposed short-circuiting.


On Thu, Nov 20, 2008 at 6:29 AM, David Allsopp <dra-news@metastack.com>wrote:

> On 20 November 2008 10:49, Stefano Zacchiroli wrote:
> > On Thu, Nov 20, 2008 at 10:33:03AM +0000, Richard Jones wrote:
> > > Encouraging developers to open modules is also usually a bad idea,
> > > except in very limited circumstances (hello Printf).
> >
> > Why? You and others failed me to convince of this. Or, better, I'm
> > sure there are problems with that, but they just show deficiencies
> > inherited from other parts of the language.
>
> Consider
>
> open Array;;
> open List;;
>
> (* Hundreds of lines of code *)
>
> length [];;
>
> The code is now is brittle in terms of the order of the open statements at
> the top of the file and will fail to compile if they're swapped. Of course,
> if you don't care about that kind of subtle refactoring error then open is
> completely fine. Personally, I find that kind of brittleness irritating -
> and it also has the potential to waste a huge amount of time if you have to
> refactor the code.
>
> Whether you find code less readable with or without module names is of
> course a matter taste and IIRC, OCaml 3.11 .annot files contain the
> necessary information to expand them so there could be a nice editor plugin
> to expand or remove module paths...
>
> > >   The most straightforward solution to this problem to me looks like
> > >   providing a syntax equivalent like "from Module import foo, bar"
> > >   which selectively imports only some identifiers from a given module.
>
> Which, for values only, is of course a trivial camlp4 extension... and
> could
> be generalised to include type declarations and so on with only a little
> more work. The .NET languages have a syntax for selectively importing
> classes from a namespace rather than the entire namespace (and it's
> different from Java's in that you can rename the class while you do it).
>
>
> David
>
> _______________________________________________
> Caml-list mailing list. Subscription management:
> http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
> Archives: http://caml.inria.fr
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>

[-- Attachment #2: Type: text/html, Size: 4030 bytes --]

  parent reply	other threads:[~2008-11-20 14:46 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-18  9:56 Wanted: your feedback on the hierarchy of OCaml Batteries Included 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
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                 ` Ashish Agarwal [this message]
2008-11-20 17:54                 ` [Caml-list] open Module (not?) considered harmful 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=d8be5ae20811200646m583371a0w3375ac3bc16f2073@mail.gmail.com \
    --to=agarwal1975@gmail.com \
    --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;
as well as URLs for NNTP newsgroup(s).