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_FAIL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id 9A460BC69 for ; Fri, 5 Oct 2007 12:51:58 +0200 (CEST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAALezBUfAXQInh2dsb2JhbACOOQIBCAop X-IronPort-AV: E=Sophos;i="4.21,234,1188770400"; d="scan'208";a="2179578" Received: from concorde.inria.fr ([192.93.2.39]) by mail1-smtp-roc.national.inria.fr with ESMTP; 05 Oct 2007 12:51:58 +0200 Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by concorde.inria.fr (8.13.6/8.13.6) with ESMTP id l95ApvAc007649 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Fri, 5 Oct 2007 12:51:58 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAGy0BUdQW+UCh2dsb2JhbACOOQIBCAop X-IronPort-AV: E=Sophos;i="4.21,234,1188770400"; d="scan'208";a="2414724" Received: from main.gmane.org (HELO ciao.gmane.org) ([80.91.229.2]) by mail2-smtp-roc.national.inria.fr with ESMTP; 05 Oct 2007 12:51:57 +0200 Received: from list by ciao.gmane.org with local (Exim 4.43) id 1IdkmU-0002uQ-8c for caml-list@inria.fr; Fri, 05 Oct 2007 10:51:42 +0000 Received: from ivr94-8-88-162-26-239.fbx.proxad.net ([88.162.26.239]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 05 Oct 2007 10:51:42 +0000 Received: from li by ivr94-8-88-162-26-239.fbx.proxad.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 05 Oct 2007 10:51:42 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: caml-list@inria.fr From: Zheng Li Subject: Re: Why can't I call a function over a subclass? Date: Fri, 05 Oct 2007 12:53:32 +0200 Message-ID: <87ejg9oms3.fsf@pps.jussieu.fr> References: <28fa90930710050048p3d6f4e8cs8e13d0fe49d296f2@mail.gmail.com> <4705EF58.3040605@bik-gmbh.de> <1191580233.6509.26.camel@Blefuscu> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: ivr94-8-88-162-26-239.fbx.proxad.net User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/23.0.50 (gnu/linux) Cancel-Lock: sha1:QnnJClsQMpBt7moZwuUivSCu/4c= Sender: news X-Miltered: at concorde with ID 4706174D.001 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ens-lyon:01 subtypes:01 val:01 bool:01 pps:01 pps:01 jussieu:01 jussieu:01 writes:01 expression:02 subclass:03 let:03 let:03 luca:04 arguments:07 David Teller writes: > I agree with Luca that it's disconcerting. > When r is a class, I would expect > let f (x:r) (y:r) =... This expression says f accept arguments of type [r], what you mean to say is: f accept any arguments belong to [r]'s subtypes family. Then say it with # let f (x:#r) (y:#r) = x#get_x = y#get_x val f : #r -> #r -> bool = -- Zheng Li http://www.pps.jussieu.fr/~li