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 mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id 36F307F0AF for ; Sun, 6 Mar 2016 02:33:35 +0100 (CET) IronPort-PHdr: 9a23:7P7WoxR3B8GNIrVNRpCb3nNQS9psv+yvbD5Q0YIujvd0So/mwa64YBCN2/xhgRfzUJnB7Loc0qyN4/+mBjxLuMnZ+Fk5M7VyFDY9wf0MmAIhBMPXQWbaF9XNKxIAIcJZSVV+9Gu6O0UGUOz3ZlnVv2HgpWVKQka3CwN5K6zPF5LIiIzvjqbpq8KVPFUD3WXlKZpJbzyI7izp/vEMhoVjLqtjgjDomVBvP9ps+GVzOFiIlAz97MrjtLRq8iBXpu5zv5UYCfayLOwESulTBTEidmQ0/9HDtB/ZTALJ6GFPfH8Rl09nBBPa7ReyQJD3+gHgu+Zwwi2dIoWiQrcvRjWkqrkuQjf3hS1BOzNvozKfsdB5kK8O+EHpnBd42YOBOIw= Authentication-Results: mail3-smtp-sop.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 (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of goswin-v-b@web.de) identity=pra; client-ip=212.227.17.12; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="goswin-v-b@web.de"; x-sender="goswin-v-b@web.de"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of goswin-v-b@web.de designates 212.227.17.12 as permitted sender) identity=mailfrom; client-ip=212.227.17.12; receiver=mail3-smtp-sop.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 (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@mout.web.de) identity=helo; client-ip=212.227.17.12; receiver=mail3-smtp-sop.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: A0BeAACFiNtWjgwR49RdrTUEA4ohh1wBDYFphzA4FAEBAQEBAQEBEAEBAQEHDQkJEg8vgi2CQhN7NAUoiEABFQSgZpkPH4Upj1qCX4EPBYdbj0+NY4klCoVVjlUeAQGCVhyBNYopAQEB X-IPAS-Result: A0BeAACFiNtWjgwR49RdrTUEA4ohh1wBDYFphzA4FAEBAQEBAQEBEAEBAQEHDQkJEg8vgi2CQhN7NAUoiEABFQSgZpkPH4Upj1qCX4EPBYdbj0+NY4klCoVVjlUeAQGCVhyBNYopAQEB X-IronPort-AV: E=Sophos;i="5.22,543,1449529200"; d="scan'208";a="167245364" Received: from mout.web.de ([212.227.17.12]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Mar 2016 02:33:34 +0100 Received: from frosties.localnet ([134.3.242.84]) by smtp.web.de (mrweb102) with ESMTPSA (Nemesis) id 0Lr2Zb-1Zxq621p7T-00eaag for ; Sun, 06 Mar 2016 02:33:33 +0100 Received: from mrvn by frosties.localnet with local (Exim 4.84) (envelope-from ) id 1acNZc-0007Cc-NG for caml-list@inria.fr; Sun, 06 Mar 2016 02:33:32 +0100 Date: Sun, 6 Mar 2016 02:33:32 +0100 From: Goswin von Brederlow To: caml-list@inria.fr Message-ID: <20160306013332.GA27650@frosties> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Provags-ID: V03:K0:iga5md+lLbU2GZeD+n3legMcUHQ31ZIEHqGvzVjkowrxYllh6AG klHplBG816VI1LkYSCP0hGaOH+uL7zmXPU7tdU9SlnkrIIYUWupYxtYTWgUXoKCPbYobKTp j+5NHkRm3VAG0D7UcpC1MchLmfbhKb1lZ1WEKN0K+DBEl8xeRd1YHT/rpsaOuwh/Z3vZtgi Plxl1UwXUBVI+8bQMfiGw== X-UI-Out-Filterresults: notjunk:1;V01:K0:pjXOxg95pCk=:SE8gmYLHPYfKhXJ35DJFpo Oy+KsofH9WnIU7tlB+ez1yluN2GbME2oNzq7k4IzriP7Q98kJ+/0+wtrRNe6mb8j+8F+cFPzn CGzyaoOXQXv4sTUfWMJA9oB3tCVDsOcXSPe3i6mqdYDuipKpMxoEmk3YE/lBw8bS6ljCuHwio Cxb9+J2ay1v7KUAicFDZ4dRHpI9mD1tJVhGX/qOOCQbEfflIV8uZxMW7CmCPHytgugV3YrY+G VSPMu2SRPK3pUidy6g2cuMXLX3m+wI1zyT4Jda9z6AdMKVJJ2/a7qAMIwRzGzeC9pywHYhb+Q 3piGHNI3fWKtuJB79Izt7NNttHAwaKoYuftS9QzwVMlOhn0SiD7uJRXteozfJQMFNEesAXZ8y /fmxMDqz9nuGktqgL7ryvbXJcZrfbW/yS6DUOEoq50f7c++twfHjPMPLrCu+6siHE9Kq3CgQO FZBawQsbXvKguu6kj+Cl1fPNn7jFkFifVVTFukBhZXYSLQvNh5vSLYM8ODX1xZ9CtRSWtFgVg DXTQiy5Wf4BgkK/hKHdjMh6KzLIHSGgNhS6G5yB0Tkvh1fvFM16FztZgGlJOXmOP+R4Op1j5i FKA+WXk6zdUPY2GcYyPte/fAOnJPfBxmetOOmnnqhqwKe39r9xsLHiP1yms+8laG0FRBuH4el I+4ETZf00qOAL21GeNtDCNpNgJfGLZK4DJyhL7v06Fi5bAITFWONi4CXNNGiyX9pbOzAiVzke AaIeX3OzHv8D/XyquzBoqTFzrmie+MMTfHkIwLvTb36zZBG1cF2z1oovb34= Subject: [Caml-list] Error: In this definition, a type variable cannot be deduced from the type parameters. Hi, if I use the type aliases in the commented out lines then I get: Error: In this definition, a type variable cannot be deduced from the type parameters. To me the types sure do look alike and nothing is private or hidden my a signature. So what am I missing? MfG Goswin ------------------------------------------------------------------------- module Proxy = struct type +'a t end module QObject = struct type +'a qObject' type +'a t = 'a qObject' Proxy.t class ['a] qObject proxy = object constraint 'a = 'b qObject' as 'a method proxy : 'a Proxy.t = proxy end end module QWidget = struct type +'a qWidget' type +'a t = 'a qWidget' QObject.t external add : 'a qWidget' QObject.qObject' Proxy.t -> 'b qWidget' QObject.qObject' Proxy.t -> unit = "add" (* external add : 'a t -> 'b qWidget' QObject.t -> unit = "add" *) class ['a] qWidget proxy = object constraint 'a = 'b qWidget' QObject.qObject' as 'a inherit ['a] QObject.qObject proxy method add : 'c 'd . ('d qWidget' QObject.qObject' #QObject.qObject as 'c) -> unit = fun w -> add proxy w#proxy end end module QButton = struct type +'a qButton' type +'a t = 'a qButton' QWidget.t external set : 'a qButton' QWidget.qWidget' QObject.qObject' Proxy.t -> 'b QWidget.qWidget' QObject.qObject' Proxy.t -> unit = "set" (* external set : 'a t -> 'b QWidget.t -> unit = "set" *) class ['a] qButton proxy = object constraint 'a = 'b qButton' QWidget.qWidget' QObject.qObject' as 'a inherit ['a] QWidget.qWidget proxy method set : 'c 'd . ('c QWidget.qWidget' QObject.qObject' #QWidget.qWidget as 'd) -> unit = fun w -> set proxy w#proxy method text = "button" end end let qObject_proxy : unit QObject.t = Obj.magic 0 let qWidget_proxy : unit QWidget.t = Obj.magic 0 let qButton_proxy : unit QButton.t = Obj.magic 0 let qObject = new QObject.qObject qObject_proxy let qWidget = new QWidget.qWidget qWidget_proxy let qButton = new QButton.qButton qButton_proxy let () = qWidget#add qWidget let () = qWidget#add qButton let () = qButton#set qWidget let () = qButton#set qButton let () = qButton#add qWidget let () = qButton#add qButton