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=1.8 required=5.0 tests=AWL,DNS_FROM_RFC_POST 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 F0A22BB84 for ; Mon, 24 Nov 2008 23:07:19 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AtoCAI+0KknAXQImgWdsb2JhbACTXgEBFiK9UweCdQ X-IronPort-AV: E=Sophos;i="4.33,661,1220220000"; d="scan'208";a="20331201" Received: from discorde.inria.fr ([192.93.2.38]) by mail1-smtp-roc.national.inria.fr with ESMTP; 24 Nov 2008 23:07:19 +0100 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id mAOM7JJX007610 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Mon, 24 Nov 2008 23:07:19 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AocAAI+0KkmArgW7cGdsb2JhbACTXgEMCA0HEQS9TweCdQ X-IronPort-AV: E=Sophos;i="4.33,661,1220220000"; d="scan'208";a="17561054" Received: from expredir4.cites.uiuc.edu ([128.174.5.187]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 24 Nov 2008 23:07:18 +0100 Received: from axyr (aryx.cs.uiuc.edu [128.174.236.106]) by expredir4.cites.uiuc.edu (8.14.2/8.14.2) with ESMTP id mAOM7Gnx018323; Mon, 24 Nov 2008 16:07:16 -0600 (CST) To: Christophe Raffalli Cc: "forum@x9c.fr" , caml-list@inria.fr Subject: Re: [Caml-list] [ANN] Kaputt 1.0 alpha References: <8D0DD4BD-CCA5-4640-84E4-5F14F0804035@x9c.fr> <20081123213044.GA32214@usha.takhisis.invalid> <1227482073.4929e3d999bca@imp.ovh.net> <87tz9xt6bb.fsf@aryx.cs.uiuc.edu> <492B2184.4010300@univ-savoie.fr> From: Yoann Padioleau Date: Mon, 24 Nov 2008 16:05:04 -0600 In-Reply-To: <492B2184.4010300@univ-savoie.fr> (Christophe Raffalli's message of "Mon\, 24 Nov 2008 22\:49\:56 +0100") Message-ID: <87ej10u6en.fsf@aryx.cs.uiuc.edu> User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Miltered: at discorde with ID 492B2597.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; christophe:01 raffalli:01 christophe:01 raffalli:01 univ-savoie:01 combinators:01 combinators:01 camlp:01 ocaml:01 functors:01 functors:01 hashtbl:01 1.0:98 calibrate:98 kiss:98 Christophe Raffalli writes: >>> Your library looks very good, very clean. I just noticed you missed >>> the 'pair' and 'tuple' random generators. >> >> Well, maybe their names are not intuitive but Generator.zip{1..5} >> allows to combine n generators into a generator returning tuples >> of order n (zip1 being the identity function). >> >> >>> One criticism is that like many other libraries, such as oUnit, >>> ocamlcalendar, they seem a little bit heavyweight. You got hundreds >>> of functions, 5 modules ... >> >> That's true but it seems hard to have a combinator-based library with >> few functions/combinators. With too few combinators, you leave too >> much work to the developer (including a lot a boilerplate code). >> With too many combinators, you request the developer to take more >> time in order to use the library. I find it hard to calibrate the size of >> the library. >> >> Maybe things could be done in a lighter way by using objects ? > Or a camlp4 extension to build the intended function(s) by induction on > the type definition. > you could include that as part of deriving > (http://code.google.com/p/deriving/) Which would make it even more heavyweight by forcing now the client to use campl4, to download your deriving library, to understand this deriving stuff, to infer the names of the functions now that they will be hidden/internally-generated by campl4 ... Look at the ocaml standard library, why do you like it ? Because it's simple. A few types, a "kernel" of essential functions, not too much functors (well in fact I would prefer even less functors such as a simpler Map and Set like the Hashtbl module). KISS. > > Hope this helps, > Christophe >> >> >> Xavier >>