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.0 required=5.0 tests=AWL,MISSING_HEADERS, SPF_NEUTRAL autolearn=disabled version=3.1.3 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by yquem.inria.fr (Postfix) with ESMTP id A9C37BC6C for ; Mon, 28 Jan 2008 23:07:27 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAEvhnUfAXQImh2dsb2JhbACQHQEBAQgKKZVGhW8 X-IronPort-AV: E=Sophos;i="4.25,262,1199660400"; d="scan'208";a="8468210" Received: from discorde.inria.fr ([192.93.2.38]) by mail3-smtp-sop.national.inria.fr with ESMTP; 28 Jan 2008 23:07:11 +0100 Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id m0SM7BLY009446 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Mon, 28 Jan 2008 23:07:11 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAJjgnUdC+VysfGdsb2JhbACQHQEBCQQECQgTBZVGhW8 X-IronPort-AV: E=Sophos;i="4.25,262,1199660400"; d="scan'208";a="7350172" Received: from ug-out-1314.google.com ([66.249.92.172]) by mail1-smtp-roc.national.inria.fr with ESMTP; 28 Jan 2008 23:07:11 +0100 Received: by ug-out-1314.google.com with SMTP id k40so84493ugc.18 for ; Mon, 28 Jan 2008 14:07:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:user-agent:mime-version:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; bh=3aoygKIkvicW4giTbTXkg+6rgSqh42X8gT4Q3Q93sRQ=; b=ry8MRVNXKc5Hj9/Hk3EvCroWOndFPAflOoNf5CyYVu8wbW6TIjkHDT5s/duDGaIrslzyGQ/fqGW6vIjO73uO2vfU5jj9broZIuIN1rjs+lz9dJWOlug/ikthsgtTyyKec5Wx0Kz9Ekg5WVaQBR8kTGC8iaWE1oRbXDUbjYzk+1I= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:cc:subject:references:in-reply-to:content-type:content-transfer-encoding:sender; b=mZgv5LhmknE5BWrmTZJrn6RlIpcSkqh28a+9g3e6YqhuTqkcbSVFkueDylkNmK26oYrMmAiExWLFM34ok63mn3rAG61yFo6C7Bj9Q+5Btl+dqD6z/rAqRlvRrVF8pVRpjvBIWvlYBCv9XARI5F9u/7q5uKu6/TTVvBqF5LrasVk= Received: by 10.67.116.4 with SMTP id t4mr622225ugm.68.1201558025922; Mon, 28 Jan 2008 14:07:05 -0800 (PST) Received: from ?192.168.0.4? ( [87.88.165.197]) by mx.google.com with ESMTPS id k1sm1166656ugf.29.2008.01.28.14.07.04 (version=SSLv3 cipher=RC4-MD5); Mon, 28 Jan 2008 14:07:05 -0800 (PST) Message-ID: <479E5208.6080603@lix.polytechnique.fr> Date: Mon, 28 Jan 2008 23:07:04 +0100 From: Arnaud Spiwack User-Agent: Thunderbird 2.0.0.9 (Windows/20071031) MIME-Version: 1.0 Cc: caml-list@inria.fr Subject: Re: [Caml-list] [OSR] OCaml Standard Recommandation Process References: <1201440183.6302.27.camel@Blefuscu> <200801281204.00689.jon@ffconsultancy.com> <479DE545.9050306@janestcapital.com> <200801281525.12651.jon@ffconsultancy.com> <479E04E6.5000303@janestcapital.com> In-Reply-To: <479E04E6.5000303@janestcapital.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 8bit Sender: Arnaud Spiwack X-Miltered: at discorde with ID 479E520F.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; lix:01 ocaml:01 monads:01 ocaml:01 monads:01 haskell:01 camlp:01 notation:01 camlp:01 oleg:01 vouillon's:01 monadic:01 coq:01 runtime:01 compiler:01 > > Monads strike me as being a better way to do this, but again, we're > talking about deep changes to Ocaml. Monads are no more than a pair of functions (there are four in Haskell presentation of these, but two of them can be defined automatically). They not only exist by essence, but there also is a camlp4 extension (rather short actually) which gives them a nice notation looking : perform p <-- e; q <-- f; return a You can specify a module name after the "perform" keyword when using several monads. This camlp4 extension is pa_monad (authored by Oleg Kiselyov, Lydia E. van Dijk, and Jacques Carette), it works both with camlp4 3.10 and previous version by the way (plus camlp5 I guess). Actually, there are a couple of developpement that use monads : Jérôme Vouillon's Lwt (lightweight, monadic, cooperative threads) are a monad. On a more personnal note, my current developpement (somewhere deep inside the code of the proof assistant Coq) uses a monad as well. The downside is that sometimes monad might be slower than other approaches (there are more closure built than necessary). At least in the current runtime and compiler. But I guess we're going (again) off topic... We probably have to start having wiki discussions ;) . Arnaud Spiwack