From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTP id 851E85D5 for ; Tue, 26 Feb 2019 06:24:02 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.58,414,1544482800"; d="scan'208";a="370883523" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 26 Feb 2019 07:24:00 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id 197B782581; Tue, 26 Feb 2019 07:24:00 +0100 (CET) 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 1F5F082581 for ; Tue, 26 Feb 2019 07:23:45 +0100 (CET) Authentication-Results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=hendrik@topoi.pooq.com; spf=None smtp.mailfrom=hendrik@topoi.pooq.com; spf=None smtp.helo=postmaster@april.topoi.pooq.com IronPort-PHdr: =?us-ascii?q?9a23=3AkzmSwBHtXWE4K32GlsRhGp1GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ78ocqwAkXT6L1XgUPTWs2DsrQY07qQ6/iocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbAhEmDmwbaluIBmqsA7cqtQYjYx+J6gr1xDHuGFIe+?= =?us-ascii?q?NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PGAu+MLrrxjD?= =?us-ascii?q?QhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VC+85Kl3VhDnlC?= =?us-ascii?q?YHNyY48G7JjMxwkLlbqw+lqxBm3oLYfJ2ZOP94c6jAf90VWHBBU95fWSJBHI2y?= =?us-ascii?q?cogBAOUdMulFoYbwvEcOoQekCAWwGO/i0CFEi3nr1qM6yeQhFgTG0RQiEd0Qtn?= =?us-ascii?q?Tbsc/1NKYRUeuo0aTIyjLDb/ZL0jr66IjHbBYhruyWXbJxcsrc0lUvFwTdjlWX?= =?us-ascii?q?qIzpJSuV1uMKs2iC9eZvSeWvi2s+pgx3vzOhxd8sh5HIi48R0FzI6CR0zYYvKd?= =?us-ascii?q?GlRkN3fMSoHIZeuiyVMYZ9X9ksTHtyuCkgz70LoZ67czYOyJQg3xPQceSHc5KJ?= =?us-ascii?q?4hLnTuqRPTB4hGpieLK+nRqy6U+gyurlVsWuzFlKqS9FnsHNtnALyRPT9tCKR/?= =?us-ascii?q?p580u7xDqC1gDe5vtZLU06iKbXMYMtz7A/m5YLtETMBC72mEH4jK+McUUk//Cl?= =?us-ascii?q?6+T5bbXgu5CcLY50igLlP6Qyncy/GeM4MgkUU2iD/uS806Tj8VflT7VNi/06ir?= =?us-ascii?q?PZv4zCJcQHuq65BBdY3Zo55Ba6CzeqydAYnXgcLFJZYx+HlIjoO1TWIP/iF/u/?= =?us-ascii?q?glKskC1qx//cJLHhDI/NfTD/l+LGdr947wZ5wQs3zNZQr7ZVEa1JdPn6X0u0sN?= =?us-ascii?q?3DEjc4NRa1yqDpEoMu+JkZXDevD6mVKqLR+XWP4ednd+mBYoMPuTXVN/894P+o?= =?us-ascii?q?lXg+gBkWeqz/jshfU2yxAvkzexbRWnHrmNpUVD5S5lNvHtyvs0WLVHtoX1j3Wq?= =?us-ascii?q?s94j8hD4f/U9XfQZiqgfqZ2yCiWJZRYzIeUwzeITLTb4yBHsw0RmeKOMY4zG4Y?= =?us-ascii?q?UqCmSsk50ha38gT9zug/d7eGymgjrZvmkeNNyajTmBU1r2YmBtyH0mXLU2ZsmW?= =?us-ascii?q?JOXzgxxeZ0pkkvklo=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BkCwAK23Rc/4aDpUVkghmDWhKNKKUog?= =?us-ascii?q?Xo4AYhoBgY2BAwBAwEBAgEBAQEBbCiCOikBgxQTezQdMYUmrD0zhUSEd4xfgX+?= =?us-ascii?q?DdgGLDgKRXJIGCYJAkBwMGWmSLp5zBxeBVjMaCBsVgyiQeiSBNQEBjzcBAQ?= X-IPAS-Result: =?us-ascii?q?A0BkCwAK23Rc/4aDpUVkghmDWhKNKKUogXo4AYhoBgY2BAw?= =?us-ascii?q?BAwEBAgEBAQEBbCiCOikBgxQTezQdMYUmrD0zhUSEd4xfgX+DdgGLDgKRXJIGC?= =?us-ascii?q?YJAkBwMGWmSLp5zBxeBVjMaCBsVgyiQeiSBNQEBjzcBAQ?= X-IronPort-AV: E=Sophos;i="5.58,414,1544482800"; d="scan'208";a="297319963" Received: from topoi.pooq.com (HELO april.topoi.pooq.com) ([69.165.131.134]) by mail3-smtp-sop.national.inria.fr with ESMTP; 26 Feb 2019 07:23:43 +0100 Received: by april.topoi.pooq.com (Postfix, from userid 1001) id A17AEC4A30; Tue, 26 Feb 2019 01:23:41 -0500 (EST) Date: Tue, 26 Feb 2019 01:23:41 -0500 From: Hendrik Boom To: Ocaml Mailing List Message-ID: <20190226062341.t35u2tz5tole2jyv@topoi.pooq.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: NeoMutt/20170113 (1.7.2) Subject: [Caml-list] An awkwardness with type parameters Reply-To: Hendrik Boom X-Loop: caml-list@inria.fr X-Sequence: 17370 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: I have a (broken) function definition starting: let mixfix : 'token1 'phrase1. ('token1, 'phrase1, ('token1, 'phrase1) Phrasestream.phrasestream) grammar -> ('token1, 'phrase1) parser = fun gram -> ( ... It goes o for a hundred-odd lines. The type-parameterized types Phrasestream.phrasestream, grammar, and parser have been previously defined, and there are also operations defined on these types. The problem I'm having is that the OCaml type-checker ends up identifying the type parameters 'token1 an 'phrase1 because of type errors I've made in the body of the mixfix function. Somewhere I ended up using an operator that's supposed to work on values of type 'token1 on a value of type 'phrase1 instead, and identification of 'token1 and 'phrase1 is the natural result. Is there some way of forcing the type checker to treat 'token1 and 'phrase1 as different types so that I can get meaningful type errors at the point were they occur? With the present setup I only get type violation messages much later, when I try to use the mixfix function. It's far too late to trace the problem back to the actual error by that time. -- hendrik