From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 446627EEBF for ; Thu, 9 Jul 2015 01:57:57 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of garrigue@math.nagoya-u.ac.jp) identity=pra; client-ip=133.6.130.5; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="garrigue@math.nagoya-u.ac.jp"; x-sender="garrigue@math.nagoya-u.ac.jp"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of garrigue@math.nagoya-u.ac.jp) identity=mailfrom; client-ip=133.6.130.5; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="garrigue@math.nagoya-u.ac.jp"; x-sender="garrigue@math.nagoya-u.ac.jp"; x-conformance=sidf_compatible Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mailhost.math.nagoya-u.ac.jp) identity=helo; client-ip=133.6.130.5; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="garrigue@math.nagoya-u.ac.jp"; x-sender="postmaster@mailhost.math.nagoya-u.ac.jp"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0DXAACiuJ1VlwWCBoVbhEbDBwKCKgEBAQEBARIBAQEBAQgWB0+EJAEBBDoGAwE1AQEOCxguVwaIQLZahVoCjDaFCwEBAQEBAQQBAQEBAQEBARMBBotLhFMzB4MXgRSNFocSi36IQJAigmOBTWCCSwEBAQ X-IPAS-Result: A0DXAACiuJ1VlwWCBoVbhEbDBwKCKgEBAQEBARIBAQEBAQgWB0+EJAEBBDoGAwE1AQEOCxguVwaIQLZahVoCjDaFCwEBAQEBAQQBAQEBAQEBARMBBotLhFMzB4MXgRSNFocSi36IQJAigmOBTWCCSwEBAQ X-IronPort-AV: E=Sophos;i="5.15,435,1432591200"; d="scan'208";a="169466905" Received: from rabbit.math.nagoya-u.ac.jp (HELO mailhost.math.nagoya-u.ac.jp) ([133.6.130.5]) by mail2-smtp-roc.national.inria.fr with ESMTP; 09 Jul 2015 01:57:55 +0200 Received: from mailhost.math.nagoya-u.ac.jp (localhost [127.0.0.1]) by mailhost.math.nagoya-u.ac.jp (Postfix) with ESMTP id 64FF8643B; Thu, 9 Jul 2015 08:57:52 +0900 (JST) Received: from mailhost.math.nagoya-u.ac.jp (rabbit-172 [172.16.254.254]) by mailhost.math.nagoya-u.ac.jp (Postfix) with ESMTP id 2455924E1; Thu, 9 Jul 2015 08:57:52 +0900 (JST) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=math.nagoya-u.ac.jp; h= subject:mime-version:content-type:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; s=alpha; bh=ZZJJBs5uM2yW/g+yAZ8ZMJJlQF8=; b=MfRMoGj7S3KGcZ67z60EOzwbKZlW ZJTg0bq5BiAwXUQea/P2tS7eUEH+L4cEjFLp/GcjVjPoFCqmhOJWvbSQFMDdEVLJ 6A6m68WWif+RP0HuLcxaOKEoQNcJcoETODp/STIqizdWeDqS22Zq8Zm8JYoymAUS kk++QGUyxalL49E= DomainKey-Signature: a=rsa-sha1; h=Received:Subject:Mime-Version:Content-Type:From:In-Reply-To:Date:Cc:Content-Transfer-Encoding:Message-Id:References:To:X-Mailer; b=I0FQfAlijOH+NpfTRaw5mXrDpdaFfOLSAaPSDvGejhCWTVxwUXJRql37G8zP1OxPrtBQrz10637xz6dCHbXEDbpif0ZH8/bKHCItREYSCqItMy+cTfCovaUn2PkKHpuP2/Aooi8xPamiF4AHWW8DA9a9yS84SwiBijis4KaTk1I=; c=nofws; d=math.nagoya-u.ac.jp; q=dns; s=alpha Received: from [10.10.226.177] (pc2.prince-kyoto2013-unet.ocn.ne.jp [118.22.20.194]) by mailhost.math.nagoya-u.ac.jp (Postfix) with ESMTPSA id 6473B664D; Thu, 9 Jul 2015 08:56:34 +0900 (JST) Mime-Version: 1.0 (Mac OS X Mail 8.2 \(2098\)) Content-Type: text/plain; charset=us-ascii From: Jacques Garrigue In-Reply-To: Date: Thu, 9 Jul 2015 08:57:50 +0900 Cc: OCaml Mailing List Content-Transfer-Encoding: quoted-printable Message-Id: <10510894-97DB-4DA9-8334-F02C11E94504@math.nagoya-u.ac.jp> References: To: Philippe Veber X-Mailer: Apple Mail (2.2098) Subject: Re: [Caml-list] Unwanted type constraint in mutually recursive parameterized class type definition. On 2015/07/09 01:24, Philippe Veber wrote: >=20 > Dear camlers, >=20 > I obtain an unexpected answer from the toplevel when I enter the follow= ing definition: >=20 > OCaml version 4.03.0+dev7-2015-02-08 >=20 > # class type ['a] c =3D > object > method m : d > end > and d =3D > object > inherit [int] c > end > ;; > class type ['a] c =3D object constraint 'a =3D int method m : d end > and d =3D object method m : d end >=20 > What surprises me is the constraint 'a =3D int in the definition of c. Is= this is a bug or feature? This is a feature (or at least, the intended behavior) For classes, type constraints are inferred automatically, but in a monomorp= hic way. A standard workaround is to open the recursion by generalizing definitions: class type ['a,'d] c0 =3D object method m : 'd end class type d =3D object inherit ['a,d] c0 end class type ['a] c =3D ['a,d] c0 Jacques Garrigue=