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 EE7FF7EE34 for ; Sat, 2 Apr 2016 13:40:28 +0200 (CEST) IronPort-PHdr: 9a23:seG57x2UGwGPGxh8smDT+DRfVm0co7zxezQtwd8ZsegSKPad9pjvdHbS+e9qxAeQG96Lu7Qf16GN4ujJYi8p39WoiDg6aptCVhsI2409vjcLJ4q7M3D9N+PgdCcgHc5PBxdP9nC/NlVJSo6lPwWB6kO74TNaIBjjLw09fr2zQd6CyZ/rnLvjs7ToICx2xxOFKYtoKxu3qQiD/uI3uqBFbpgL9x3Sv3FTcP5Xz247bXianhL7+9vitMU7q3cY6Lod8JtLWKD+OqA5VqBwDTI8Mmlz6te4mwPESF6g4WADU2NejB1OSyLf4R33RJP2rWOuue1mxyiceNOzR5grVD7k46o9G0ygszsOKzNsqDKfscd3lq8O+B8= Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=goswin-v-b@web.de; spf=Pass smtp.mailfrom=goswin-v-b@web.de; spf=None smtp.helo=postmaster@mout.web.de Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of goswin-v-b@web.de) identity=pra; client-ip=212.227.17.11; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of goswin-v-b@web.de designates 212.227.17.11 as permitted sender) identity=mailfrom; client-ip=212.227.17.11; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mout.web.de) identity=helo; client-ip=212.227.17.11; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="postmaster@mout.web.de"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0CCAQAfr/9WkwsR49RdhAp9qHSKNIgDgXIhhWwCgSY5EwEBAQEBAQEBEQEBAQEHDQkJIS+CLYIVAQEEJwsBVgsYCSUPBSiIRQEVBAq+Tx+FTwELHopqhD1Ogl+CKwWTGIRphXOCcoUZgkCGdgqFWY8aIgGCQxEIgUxqAYglAQEB X-IPAS-Result: A0CCAQAfr/9WkwsR49RdhAp9qHSKNIgDgXIhhWwCgSY5EwEBAQEBAQEBEQEBAQEHDQkJIS+CLYIVAQEEJwsBVgsYCSUPBSiIRQEVBAq+Tx+FTwELHopqhD1Ogl+CKwWTGIRphXOCcoUZgkCGdgqFWY8aIgGCQxEIgUxqAYglAQEB X-IronPort-AV: E=Sophos;i="5.24,431,1454972400"; d="scan'208";a="211762242" Received: from mout.web.de ([212.227.17.11]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Apr 2016 13:40:28 +0200 Received: from frosties.localnet ([134.3.242.84]) by smtp.web.de (mrweb102) with ESMTPSA (Nemesis) id 0M6mPA-1Zpy4V2e16-00wX0l for ; Sat, 02 Apr 2016 13:40:27 +0200 Received: from mrvn by frosties.localnet with local (Exim 4.84) (envelope-from ) id 1amJub-0007yG-HI for caml-list@inria.fr; Sat, 02 Apr 2016 13:40:17 +0200 Date: Sat, 2 Apr 2016 13:40:17 +0200 From: Goswin von Brederlow To: caml-list@inria.fr Message-ID: <20160402114016.GC30016@frosties> References: <56FD12CC.20509@libertysurf.fr> <56FD177D.2020300@polychoron.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <56FD177D.2020300@polychoron.fr> User-Agent: Mutt/1.5.23 (2014-03-12) X-Provags-ID: V03:K0:eEw8oG8Ws6RaJBKqP5V2ILrARLPL+pK/SCFiJFS1rj8w3GYogjK 1YgMK/C9E9V5bZfXlZ+1IRrbwntfO7tuCN6dpioH6TsgNd+oxY9l2pVlCrD4FxQJD9Nofny EN6Nx68MGtU68J40Ki/uoIXz6g2fhmDFTnQG+bzSCxrST+PVZEuv1o69Gr6oFWvm1ho+NtX yZ/cJbVKRbXJz1veaotRA== X-UI-Out-Filterresults: notjunk:1;V01:K0:OWOX+0AcfGc=:sOEWRuHht1xceNe9506fdK XAKK8M262T22lPaO0ey4de6wmU2A6ORtTrldILgrIxKkCe7k/OVMuIhmg+iQwijkINCBVYfBI SFhnUDXdeeyCK93QEHjHrAqrPrwTOGZzbaCeYUSSk9Kgy4AMO4B2SGE+fBG0c2uiMS7j0LpjX XL4JgBG18NiFvcOPx4nyrgydCo/OhKx5U240ryHlHohMZcu3LXnRBgs020HpS3tXkIpuX7gbb 1XH2HNlSkkKDLuyXh9JWIX5Z/UuotKHT1aMuxi6bmoK2zB6/+03tO4OPcPIQPep7UgFYXFbJz o70YrRePvufsEOz8dzgjhep0d7oKYvoqJqzDIZAV5g7ZfbA/CNMTTH60cHHix+4pBvG/AXGG7 tYEUXHxj2yXSF2Y/2zg3V7u5lA/HnLDraR0IhSsrd01Yt5oXFABLLQOsHzRx1tazrgsbi9M5Y jG8ELVMgUMHZrOTwodMGxZBgmJ2hDHQzFQTedGsAWfOHhi2HuiRQyaKfR4daWKlmaavGoK7Qj vDgLTQnj/HRxpjsyIqnQR9EYP/Dud0RUC0vGXm9Ntz3iD3Widjcq9huUNPd4BUCtlgxrg5lu5 L4Fox93bPV/SqXULvikBUP9D0mjaJsEuvc83w6c/Xr5PA3xCNw1/65y6DriB0K4KWHt9A7Cbs KVgQKNMUBPimU5EP2ha3gGsNwSABXuwjvNzFgcA6arccI/1T5HFeRlM6jaehd2JpDfwGn3ac9 MdS0U3akXOB5bOHkNFPg/NGxaphjW31+ztJCPTzr+twXgyuQ6voFL3h6pQ0= Subject: Re: [Caml-list] explicit polymorphic type annotation On Thu, Mar 31, 2016 at 02:26:37PM +0200, octachron wrote: > Hi, > > In order to pass a polymorphic function to your rank-2 function f, you need > to encapsulate it > eitheir in a record: > > type poly = { f: 'a. 'a -> 'a } > let func = {f = (fun x -> x) } > let f func = func.f 1, func.f 2. > > or in an object > > let func = object method f:'a.'a->'a = fun x -> x end > let f (func: 'a>) = func#f 1, func#f 2.;; > > There is a section on polymorphic method in the manual here: > http://caml.inria.fr/pub/docs/manual-ocaml/objectexamples.html#sec34 > and explicit polymorphic type for record field are briefly mentioned at the > end of > http://caml.inria.fr/pub/docs/manual-ocaml/coreexamples.html#sec12. > > Regards, > octachron > > > Le 03/31/16 14:06, William a écrit : > >Hi, > > > >I don't know how to handle this, and can not find how to do it in the > >manual. I would like "func" to be polymorphic : > > > >let f func = > > Printf.printf "%i\n%!" (func (1,2)); > > Printf.printf "%f\n%!" (func (1.,2.));; > >f fst;; > >f snd;; > > > >=> > >Characters 85-87: > >Printf.printf "%f\n%!" (func (1.,2.));; > > ^^ > >Error: This expression has type float but an expression was expected of > >type int > > > > > >let f (func:('a. 'a * 'a -> 'a)) = > > Printf.printf "%i\n%!" (func (1,2)); > > Printf.printf "%f\n%!" (func (1.,2.));; > >f fst;; > >f snd;; > > > >=> > >Characters 15-16: > >let f (func:('a. 'a * 'a -> 'a)) = > > ^ > >Error: Syntax error: type expected. > > > > > > > >Could someone show me how to handle this ? > > > >Also, I did not find any relevant chapter in ocaml.org or ocaml reference > >manual to explain how to do. Any pointers ? > > > >Best regards > > Or in a GADT. MfG Goswin