From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 6A2ACBB83 for ; Thu, 4 May 2006 20:33:41 +0200 (CEST) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id k44IXeY7022015 for ; Thu, 4 May 2006 20:33:41 +0200 Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id UAA15848 for ; Thu, 4 May 2006 20:33:40 +0200 (MET DST) Received: from mail1.sea5.speakeasy.net (mail1.sea5.speakeasy.net [69.17.117.3]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id k44IXcA4011523 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=FAIL) for ; Thu, 4 May 2006 20:33:39 +0200 Received: (qmail 32058 invoked from network); 4 May 2006 18:33:37 -0000 Received: from shell3.sea5.speakeasy.net ([69.17.116.4]) (envelope-sender ) by mail1.sea5.speakeasy.net (qmail-ldap-1.03) with AES256-SHA encrypted SMTP for ; 4 May 2006 18:33:37 -0000 Date: Thu, 4 May 2006 11:33:37 -0700 (PDT) From: brogoff To: Luc Maranget Cc: Jeremy Yallop , caml-list@inria.fr Subject: Re: [Caml-list] Oddness with recursive polymorphic variants In-Reply-To: <20060504171010.GB23421@yquem.inria.fr> Message-ID: References: <445A23BF.4030001@sms.ed.ac.uk> <20060504171010.GB23421@yquem.inria.fr> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Miltered: at concorde with ID 445A4904.002 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at nez-perce with ID 445A4902.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; recursive:01 variants:01 maranget:01 polymorphism:01 wrote:01 luc:01 polymorphic:01 caml-list:01 speakeasy:01 expression:01 constraint:01 variant:02 seems:03 let:03 let:03 X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.0.3 On Thu, 4 May 2006, Luc Maranget wrote: > I cannot really explain why it matters, but I can supply a minimal (?) example > > type f = [`A ] > type g = [f | `C] > > let k (x:f) = (x:g);; > ^ > This expression has type f but is here used with type g > The first variant type does not allow tag(s) `C Not enough polymorphism, the error message seems clear type 'a h = 'a constraint 'a = [> `A];; let k (x : 'a h) = (x : g) works. -- Brian