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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id E9CF6BC6C for ; Thu, 20 Sep 2007 13:49:57 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAIP78UbAXQImn2dsb2JhbACOEQEBAQEHBAYHIA X-IronPort-AV: E=Sophos;i="4.20,278,1186351200"; d="scan'208";a="1459144" Received: from discorde.inria.fr ([192.93.2.38]) by mail2-smtp-roc.national.inria.fr with ESMTP; 20 Sep 2007 13:51:20 +0200 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 l8KBoXVW008070 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Thu, 20 Sep 2007 13:50:34 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAIP78UZA6aLjkmdsb2JhbACOEQEBAQEHBAQHIA X-IronPort-AV: E=Sophos;i="4.20,278,1186351200"; d="scan'208";a="16472578" Received: from nz-out-0506.google.com ([64.233.162.227]) by mail4-smtp-sop.national.inria.fr with ESMTP; 20 Sep 2007 13:51:19 +0200 Received: by nz-out-0506.google.com with SMTP id z3so389921nzf for ; Thu, 20 Sep 2007 04:51:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; bh=828DeGKPmJWmVJtI29J4JUaaRwn5vlqNdVg1Nui6xaw=; b=HnAcZf5w5AeSad4+ggcxgn9MCPTaLfd+eyemxwqt53YJ2qcUeGziI7UTxMrraMcpOe1FZuP25/dUEC790y34d1Y1nprMeg+4y9sXQO+7b9LtApqdyH9kvWaLS/P60vLj9AfK/RzuyRSHaDwzjLNbYwG8df76Cyc/y4ykAGptomw= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=LSJg/wuj4gJhbJhD6lR2CTtaKug6KyfZxBMrNvrjHnwcnW5Gz5W3e3Rx6r0b+zfKaYb3p0D7vvNUZqISEuQJfxskS2ff+yiRc+H6U2NTVdU8UI2I0eMKCRfPeyDbG8RvIFY9tTAOuV+LMD8+HyDIjd7sj9xHr0UJTcmi9qIXmxY= Received: by 10.65.116.10 with SMTP id t10mr3937322qbm.1190289078177; Thu, 20 Sep 2007 04:51:18 -0700 (PDT) Received: by 10.64.242.14 with HTTP; Thu, 20 Sep 2007 04:51:18 -0700 (PDT) Message-ID: <4a708d20709200451p247b08ceodc65f23dd8e2c017@mail.gmail.com> Date: Thu, 20 Sep 2007 13:51:18 +0200 From: "Lukasz Stafiniak" To: "ocaml ml" Subject: Polymorphic recursion, please 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 46F25E89.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; lukasz:01 recursion:01 recursion:01 syntax:01 syntax:01 variants:01 subtyping:01 beaten:98 polymorphic:01 polymorphic:01 rec:01 rec:01 variables:02 variables:02 implicit:03 Hello, I've been beaten by lack of polymorphic recursion again. I propose the following syntax: let rec (f :> ty) = ... Here, all type variables (explicit and implicit) in ty are generalized. The alternative syntax: let rec (f : 'a b c . ty) = ... makes it more difficult (if possible? I forgot.) to catch implicit row variables (I'm using polymorphic variants for subtyping).