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=2.0 required=5.0 tests=DNS_FROM_SECURITYSAGE autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id 1808DBBAF for ; Tue, 18 Nov 2008 20:15:37 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApsAAIujIknUnw6UlGdsb2JhbACCPJEcAQEBAQkLCAkRBL8Dgnk X-IronPort-AV: E=Sophos;i="4.33,626,1220220000"; d="scan'208";a="31577267" Received: from fhw-relay07.plus.net ([212.159.14.148]) by mail4-smtp-sop.national.inria.fr with ESMTP/TLS/AES256-SHA; 18 Nov 2008 20:15:11 +0100 Received: from [87.115.4.231] (helo=leper.local) by fhw-relay07.plus.net with esmtp (Exim) id 1L2W2V-0005rb-V1; Tue, 18 Nov 2008 19:15:08 +0000 From: Jon Harrop Organization: Flying Frog Consultancy Ltd. 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 20:17:36 +0000 User-Agent: KMail/1.9.9 Cc: Richard Jones References: <1227002178.6170.25.camel@Blefuscu> <200811181817.23216.jon@ffconsultancy.com> <20081118185914.GA20702@annexia.org> In-Reply-To: <20081118185914.GA20702@annexia.org> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200811182017.36574.jon@ffconsultancy.com> X-Plusnet-Relay: 71813e19eca8cc1b66161bc2222050ba X-Spam: no; 0.00; ocaml:01 struct:01 functors:01 struct:01 ocaml:01 frog:98 wrote:01 wrote:01 incompatible:01 caml-list:01 minor:01 seems:03 module:03 module:03 hierarchy:03 On Tuesday 18 November 2008 18:59:14 Richard Jones wrote: > On Tue, Nov 18, 2008 at 06:17:23PM +0000, Jon Harrop wrote: > > I don't follow. Can you not use "include" to extend an existing module: > > > > # module Array = struct > > include Array > > You're missing the point which is scalability - how to deal with > distributed parties who are loosely coordinated. The above scheme > allows one person to extend the Array module, but not two people, > unless they coordinate with each other about which order they extend > it (or both have incompatible extensions). If the library creator did not use functors or classes to make their design reusable then the only solution for the user is to include all of the implementations they require: module Array = struct include RichardsArray include JonsArray end Given the lack of libraries available for OCaml anyway, this seems like a very minor concern to me. -- Dr Jon Harrop, Flying Frog Consultancy Ltd. http://www.ffconsultancy.com/?e