From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 34E32BBAF for ; Thu, 20 Nov 2008 11:49:20 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvECAPPOJElDz4HegWdsb2JhbACTWwEBFiK+M4J8 X-IronPort-AV: E=Sophos;i="4.33,639,1220220000"; d="scan'208";a="20166567" Received: from fettunta.fettunta.org ([67.207.129.222]) by mail1-smtp-roc.national.inria.fr with ESMTP; 20 Nov 2008 11:49:19 +0100 Received: from usha.takhisis.invalid (unknown [10.17.0.18]) by fettunta.fettunta.org (Postfix) with ESMTP id 87F701812E for ; Thu, 20 Nov 2008 10:49:18 +0000 (UTC) Received: by usha.takhisis.invalid (Postfix, from userid 1000) id 92BE96875; Thu, 20 Nov 2008 11:49:14 +0100 (CET) Date: Thu, 20 Nov 2008 11:49:14 +0100 From: Stefano Zacchiroli To: caml-list@yquem.inria.fr Subject: open Module (not?) considered harmful Message-ID: <20081120104914.GA14355@usha.takhisis.invalid> References: <1227002178.6170.25.camel@Blefuscu> <200811182330.03947.jon@ffconsultancy.com> <1227076192.6290.7.camel@Blefuscu> <4b5157c30811190146l2c6a5e2cv4a085bcc14ae5f4@mail.gmail.com> <20081119211124.51610ae9@alcazar.inria.fr> <1227172839-sup-5973@ausone.inria.fr> <20081120103303.GA25346@annexia.org> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20081120103303.GA25346@annexia.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Spam: no; 0.00; zacchiroli:01 zack:01 printf:01 syntax:01 non-uniform:01 syntax:01 foo:01 cheers:01 zacchiroli:01 postdoc:01 zack:01 20,:98 dietro:98 c'e:98 sempre:98 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. Problem 1) once you open you loose the information where an identifier comes from. True, but it is a tool deficiency, not an intrinsic deficiency. AFAIU Ocamlwizard addresses that [1]. Problem 2) "open Module" is too broad, hence it "splice in" the current scope all identifiers of Module. I do agree that the solution of locally defined modules is not a satisfactory solution for that problem, for the reason mentioned (cumbersome syntax, and non-uniform choice for the local module names). 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. Cheers. [1] http://osp.janestcapital.com/files/ocamlwizard.pdf -- Stefano Zacchiroli -o- PhD in Computer Science \ PostDoc @ Univ. Paris 7 zack@{upsilon.cc,pps.jussieu.fr,debian.org} -<>- http://upsilon.cc/zack/ Dietro un grande uomo c'è ..| . |. Et ne m'en veux pas si je te tutoie sempre uno zaino ...........| ..: |.... Je dis tu à tous ceux que j'aime