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 C7E607F60B for ; Fri, 24 Mar 2017 10:20:34 +0100 (CET) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=grumpy@drno.eu; spf=Pass smtp.mailfrom=grumpy@drno.eu; spf=None smtp.helo=postmaster@smtp.drno.eu Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of grumpy@drno.eu) identity=pra; client-ip=5.196.89.207; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="grumpy@drno.eu"; x-sender="grumpy@drno.eu"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of grumpy@drno.eu designates 5.196.89.207 as permitted sender) identity=mailfrom; client-ip=5.196.89.207; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="grumpy@drno.eu"; x-sender="grumpy@drno.eu"; 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@smtp.drno.eu) identity=helo; client-ip=5.196.89.207; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="grumpy@drno.eu"; x-sender="postmaster@smtp.drno.eu"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3A5QkgfhOHMeeLOeBvZNcl6mtUPXoX/o7sNwtQ0KIM?= =?us-ascii?q?zox0LP77rarrMEGX3/hxlliBBdydsKMYzbKO+4nbGkU4qa6bt34DdJEeHzQksu?= =?us-ascii?q?4x2zIaPcieFEfgJ+TrZSFpVO5LVVti4m3peRMNQJW2aFLduGC94iAPERvjKwV1?= =?us-ascii?q?Ov71GonPhMiryuy+4ZPebgFHiTanfb9+MAi9oBnMuMURnYZsMLs6xAHTontPde?= =?us-ascii?q?RWxGdoKkyWkh3h+Mq+/4Nt/jpJtf45+MFOTav1f6IjTbxFFzsmKHw65NfqtRbY?= =?us-ascii?q?UwSC4GYXX3gMnRpJBwjF6wz6Xov0vyDnuOdxxDWWMMvrRr0yRD+s7bpkSAXwhS?= =?us-ascii?q?kZNzA37WLZhMJ/g61HrxysvAB/zozObY2JKPZyYqHQcNUHTmRBRMZRUClBD5u9?= =?us-ascii?q?YYsVEuoBOP5YrongrFYJohu+HxSsBOb3yj5InXL5wLc60+ImEQ3cwgMgAssDvX?= =?us-ascii?q?LJp9v2LKcfSeC4wLPVwTjHbv5awzTw5YzSfhw/vf2BX7R9etfLx0Y1DQPKlFCQ?= =?us-ascii?q?pJTlPzyL0uQNtHCW7/FlVeKzk24rsRx+oiKpxscrkIXGmJ8VxkjF9SV/3ok1Oc?= =?us-ascii?q?W1RU5hbdK5FJZdtjuWOohyT884XW1kpCQ3xqUDuZGhfSgKzJonxwTYa/yCa4WI?= =?us-ascii?q?7QjjVPuUITdghHNoY6+whwy08Uin0OHzSNS03E5QriVZitnMqmwN1xvL58ebUP?= =?us-ascii?q?R9+0Oh1S+L1wDS8eFEPVs5lbHbKp4k2r4/jIAfsUXFHi/smUX5lrWadks++rvg?= =?us-ascii?q?1+OyabzjotqYNpRoogD4KKUn3MKlUsoiNQ1bcHKG/PytnOns51D8WKRigucwle?= =?us-ascii?q?/UrcaJdowguqelDloNgc4Y4BGlAmL+3Q=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BTCQBb5NRY/89ZxAVdHQEXAQYBCwEXA?= =?us-ascii?q?QYBhQWDYosCkDyXdoYsg1kVAQEBAQEBAQEBAQFqKIIzIIJsBBkBATg0AiYCiny?= =?us-ascii?q?oYWiBbDqDCAEBBYdfCIELhUKCBgiIAoI6gl+JKpM0gVOBC49tg1YFjVWTZTUig?= =?us-ascii?q?QQ6IhKESQELAYJEPzWJbgEBAQ?= X-IPAS-Result: =?us-ascii?q?A0BTCQBb5NRY/89ZxAVdHQEXAQYBCwEXAQYBhQWDYosCkDy?= =?us-ascii?q?XdoYsg1kVAQEBAQEBAQEBAQFqKIIzIIJsBBkBATg0AiYCinyoYWiBbDqDCAEBB?= =?us-ascii?q?YdfCIELhUKCBgiIAoI6gl+JKpM0gVOBC49tg1YFjVWTZTUigQQ6IhKESQELAYJ?= =?us-ascii?q?EPzWJbgEBAQ?= X-IronPort-AV: E=Sophos;i="5.36,214,1486422000"; d="scan'208";a="266012447" Received: from dns.drno.eu (HELO smtp.drno.eu) ([5.196.89.207]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Mar 2017 10:20:34 +0100 To: caml-list@inria.fr DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=drno.eu; s=default; t=1490347233; bh=zcx3PpCV1X3SiwF09KzL5Tst0Hzs4xrTorSxoP118W8=; h=To:From:Subject:Date; b=McoJj5cuA98cWDPSC/UU+BHT/n1datRevYOuSZKjR0922aoH8CJTE0l1RM1jNC/Nk xX0a9LJAWvymdnbIAPRC3rwvGZ7w7JDdWnfpMd9mNXKn4/xe6B8YZLt7iiAxGG1WfN fo/GEBVp//DmdhqvZioUsHC0xbdEHfMi58HOPwyd6KieuXZHjPGZXPLtADUgxHGua4 0v5vOUVJxyUdAJgFh/87mikmX4CqyW86SPNSzm3rnKMdRLDXfNMsYgtmnnrb11tIJH YfPCJI2x4ZTuDV34R8Vq1e+6z5idVjyGI6P/v55NTXHw6f97Nqlmx9u0F+qZ4AMe3M azolcG/odGkDZO5OMy8sftmlwB6L+Q2ebfO08VSu2NfXae0Atu9NhxbSpBwsHHVnhh iuMEvWFRp62V84A4YWnWOYCBAK9BfkExvMRGQO3RuquBH30nm+PFT/4bJLGsTF0MdR KV/E2HhySLBWlESHXJnn3HQp2/x2vHbJSUucU+QR0WbznIV4fNgA7xnVAoDjd76/Oa 4uGJWks22sFTZcGyd3BgIuxTEWzRiOX/QmvamEpYc1ge3AB1BHFFo79N8KKKv5MO2R 2L+DYoPLkMZbTeSlm04suQepLq/Lw67dlG6dV2mEmjD6UO3RxmjpV+I+wKcU0nA6gp bMrgqn35J4AlmK4ZhqS9OVlY= From: Grumpy Message-ID: <167e229f-2ffc-14ab-8725-5d1af71c167b@drno.eu> Date: Fri, 24 Mar 2017 10:20:32 +0100 Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Validation-by: grumpy@drno.eu Subject: [Caml-list] Type inference curiosity Hello, I think there is an incoherency or a bug somewhere in the type inference engine with the following code with version 4.02.3 (I have not tested in previous versions). Both functions eval and eval2 are identical but the inferred types are different, and the type inferred for eval2 is actually wrong. The function eval is typed correcly ('a exp -> 'a) while the type inferred for funcion function eval2 is (int exp -> int), which is wrong because of the Inc case returning ('a exp -> 'a). It seems the syntax (type a) leads to this incorrect behaviour... type _ exp = | Stop : int exp | Inc : (int exp -> int) exp let rec eval : type a. a exp -> a = function | Stop -> 0 | Inc -> (fun (p : int exp) -> 1 + eval p) let rec eval2 (type a) (p : a exp) : a = match p with | Stop -> 0 | Inc -> (fun (p : int exp) -> 1 + eval2 p)