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,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 CB2D0BBCA for ; Tue, 26 Feb 2008 13:24:59 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAADiTw0fAXQImh2dsb2JhbACQZAEBAQgKKZRPhyg X-IronPort-AV: E=Sophos;i="4.25,407,1199660400"; d="scan'208";a="9606035" Received: from discorde.inria.fr ([192.93.2.38]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Feb 2008 13:24:59 +0100 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id m1QCOvhI026328 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Tue, 26 Feb 2008 13:24:59 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAOuTw0fRVYTzi2dsb2JhbACQZAEBAQgEBAkKEQWUUoco X-IronPort-AV: E=Sophos;i="4.25,407,1199660400"; d="scan'208";a="23058532" Received: from an-out-0708.google.com ([209.85.132.243]) by mail4-smtp-sop.national.inria.fr with ESMTP; 26 Feb 2008 13:24:58 +0100 Received: by an-out-0708.google.com with SMTP id c24so463580ana.97 for ; Tue, 26 Feb 2008 04:24:57 -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:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=LlVaLu1BNtY3TPK4ZnyqPaaImUDPTpOFhkwId9G+sx0=; b=tHksbq6IgQvpIv0OUFYYyPpj7DELhJaUw2veOkASCXu8hHaELxYJqYkJSBM/Aygu1DRcEhILfWPfbOiAcBWIyt1L//8BPqQZYwxj8fGajNTfwmCxqNWch780DXuyia4D+ZhBNmcpwG+fFg4McDddiKQX0J8BpoDzOxmnB9PeQSI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=I5auUaEcFeBiDoaHVGxtQ4sy8ftutFXwvtvrMtmFyD6mkbYv+0zhQprICQX42nxBSOcNWfs/M0AKnktOcobpZC928ev0lnN0IDam/lKvxVkbuj4qm9xwiqhG8k+vTO8D1IB2mG8soV6pJfAdg7UfnI8IFAbW/96Zo4GVZLF8w0U= Received: by 10.100.92.9 with SMTP id p9mr713091anb.3.1204028697354; Tue, 26 Feb 2008 04:24:57 -0800 (PST) Received: by 10.100.248.15 with HTTP; Tue, 26 Feb 2008 04:24:57 -0800 (PST) Message-ID: <6f9f8f4a0802260424o5bce2fd9i89fbfa38bb239a6a@mail.gmail.com> Date: Tue, 26 Feb 2008 13:24:57 +0100 From: "Loup Vaillant" To: "Caml List" Subject: Unexpected restriction in "let rec" expressions MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Miltered: at discorde with ID 47C40519.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; haskell:01 ocaml:01 rec':01 rec':01 rec:01 rec:01 right-hand:01 expression:02 variables:02 unexpected:03 let:03 let:03 expressions:04 translate:04 restriction:05 hello, I was trying to translate this simple Haskell definition in Ocaml: loop :: ((a,c) -> (b,c)) -> a -> b loop f a = b where (b,c) = f (a,c) However, the direct translation doesn't work: # let loop f a = let rec (b, c) = f (a, c) in b;; Characters 25-31: let rec (b, c) = f (a, c) in ^^^^^^ Only variables are allowed as left-hand side of `let rec' So I try to bypass this restriction: # let loop f a = let rec couple = f (a, snd couple) in fst couple;; Characters 34-51: let rec couple = f (a, snd couple) in ^^^^^^^^^^^^^^^^^ This kind of expression is not allowed as right-hand side of `let rec' Any ideas about what is this restriction, an what is it for? Thanks, Loup