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.1 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr 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 E9317BBCA; Tue, 26 Feb 2008 18:49:48 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAHnfw0fAXQImh2dsb2JhbACKK4Y4AQEBCAopnBo X-IronPort-AV: E=Sophos;i="4.25,408,1199660400"; d="asc'?scan'208";a="9619227" Received: from discorde.inria.fr ([192.93.2.38]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Feb 2008 18:49:48 +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 m1QHnheC008204 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK); Tue, 26 Feb 2008 18:49:48 +0100 X-IronPort-AV: E=Sophos;i="4.25,408,1199660400"; d="asc'?scan'208";a="8616949" Received: from peray.inria.fr (HELO ausone.inria.fr) ([128.93.8.98]) by mail1-relais-roc.national.inria.fr with SMTP; 26 Feb 2008 18:49:47 +0100 Received: by ausone.inria.fr (sSMTP sendmail emulation); Tue, _d Feb 2008 18:48:37 +0100 From: "Nicolas Pouillard" Cc: "damien.doligez" , caml-list Subject: Re: [Caml-list] Unexpected restriction in "let rec" expressions To: "loup.vaillant" References: <6f9f8f4a0802260424o5bce2fd9i89fbfa38bb239a6a@mail.gmail.com> <958FA43C-037A-47D3-9352-682443875A69@inria.fr> <6f9f8f4a0802260634j133a6b5fl1868c6886f308c1b@mail.gmail.com> In-Reply-To: <6f9f8f4a0802260634j133a6b5fl1868c6886f308c1b@mail.gmail.com> Date: Tue, 26 Feb 2008 18:48:33 +0100 Message-Id: <1204047884-sup-9944@ausone.local> User-Agent: Sup/git Content-Type: multipart/signed; protocol="application/pgp-signature"; boundary="=-1204048117-849364-81606-6592-13-="; micalg="pgp-sha1" MIME-Version: 1.0 X-Miltered: at discorde with ID 47C45137.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; damien:01 damien:01 recursive:01 val:01 fixpoint:01 26,:98 doligez:01 doligez:01 rec:01 rec:01 caml-list:01 unexpected:03 let:03 let:03 expressions:04 X-Attachments: cset="UTF-8" type="application/pgp-signature" name="signature.asc" name="signature.asc" --=-1204048117-849364-81606-6592-13-= Content-Type: text/plain; charset=UTF-8 Excerpts from loup.vaillant's message of Tue Feb 26 15:34:37 +0100 2008: > 2008/2/26, Damien Doligez : > > The restriction is documented in section 7.3 of the reference manual, > > and it's here to make recursive definitions work correctly under > > eager evaluation. > > OK, I got it. By the way, replacing "couple" by "couple ()" does the trick: > > # let loop f a = > let rec couple () = f (a, snd (couple ())) in > fst (couple ());; > val loop : ('a * 'b -> 'c * 'b) -> 'a -> 'c = > > Now, I have yet to figure out the purpose of this so called "fixpoint > operator" (and if the above will work at all :-). A picture can helps... +---------+ a>-| |->c | x | b>-| |->b +---------+ +---------+ a>-| |->c | y | +->-| |->-+ | +---------+ | +--------b--------+ loop x = y Regards, -- Nicolas Pouillard aka Ertai --=-1204048117-849364-81606-6592-13-= Content-Disposition: attachment; filename="signature.asc" Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) iEYEARECAAYFAkfEUPEACgkQj+FCNw9dwLm6tQCeM6t42tgDVJWufvEgqa4/djrA HPAAnAzPOI/0c9CHD8/WvEnwL8JJQ150 =hxOa -----END PGP SIGNATURE----- --=-1204048117-849364-81606-6592-13-=--