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 8A2E47EC76 for ; Mon, 11 May 2015 19:10:06 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of yallop@gmail.com) identity=pra; client-ip=209.85.220.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of yallop@gmail.com designates 209.85.220.174 as permitted sender) identity=mailfrom; client-ip=209.85.220.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="yallop@gmail.com"; 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@mail-qk0-f174.google.com) identity=helo; client-ip=209.85.220.174; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yallop@gmail.com"; x-sender="postmaster@mail-qk0-f174.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0BFAwAP4VBVlK7cVdFcDoQzBoMYwWOHXQKBLgc6EgEBAQEBAQERAQEBAQcLCwkfMEEDg10BAQQSER0BGx0BAwwGBQsNAgImAgIiAREBBQEcBhMih3QBAxKoGD4xiziBa4J3iQkKGScNV4Q7AQEBAQEFAQEBAQEXAQUOgROKGIUFB4JogUUFnSCBJJFeggsSI4EMCYNcPz0xAYJFAQEB X-IPAS-Result: A0BFAwAP4VBVlK7cVdFcDoQzBoMYwWOHXQKBLgc6EgEBAQEBAQERAQEBAQcLCwkfMEEDg10BAQQSER0BGx0BAwwGBQsNAgImAgIiAREBBQEcBhMih3QBAxKoGD4xiziBa4J3iQkKGScNV4Q7AQEBAQEFAQEBAQEXAQUOgROKGIUFB4JogUUFnSCBJJFeggsSI4EMCYNcPz0xAYJFAQEB X-IronPort-AV: E=Sophos;i="5.13,408,1427752800"; d="scan'208";a="117374833" Received: from mail-qk0-f174.google.com ([209.85.220.174]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/RC4-SHA; 11 May 2015 19:10:05 +0200 Received: by qkhg7 with SMTP id g7so91226072qkh.2 for ; Mon, 11 May 2015 10:10:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=x04QNKoPqWNazL2no67Zal0MoFOP+5hnlZ4VdIVf7p0=; b=ELvfR7V24Zz3nD8BZRHv0N0IVNsjA/Gl96GIf5S4aLkSgXqk3Xg09u1wfH25XcDGh4 8rKULFiprPQs4qoFBKcAof1yS/r99qh92XR7NTEpCe6ZwywyqcN9CbcVO6UKULeJoB4k isgi6X8mc1vGWKra4IhA6Gwp+sIiucLHGbbdXAEUzvXhqSg+niLVqqNGtP4GFXrwo8Pz xVqF8FHTFfHoR7PqsIWT4Rbti5RLwe9/1DCwAwWxoJMORYGxP3l/bwN0dtmGGSUJA/jD hESOqXSjrSDXZOiUm8NYLtwASJhOfgrXxDL7c/abzzBz8U8OTj+OmeRl28pGqku7gl1V YhYQ== MIME-Version: 1.0 X-Received: by 10.55.25.5 with SMTP id k5mr24184841qkh.35.1431364204417; Mon, 11 May 2015 10:10:04 -0700 (PDT) Received: by 10.229.40.7 with HTTP; Mon, 11 May 2015 10:10:04 -0700 (PDT) In-Reply-To: References: Date: Mon, 11 May 2015 18:10:04 +0100 Message-ID: From: Jeremy Yallop To: Stephen Dolan Cc: Ocaml Mailing List Content-Type: text/plain; charset=UTF-8 Subject: Re: [Caml-list] Private types and subtyping On 11 May 2015 at 17:31, Stephen Dolan wrote: > My intuition is that exporting a private type from a module with "type > t = private foo" makes "t" a new subtype of "foo". So, any means of > eliminating "foo" can eliminate "t", but constructing my own "foo" > does not necessarily mean I've made a "t". > > This intuition also says the following should be OK: > > module Sub : sig > type t = private [`A | `B] > end = struct > type t = [`A] > end > > The compiler (4.02.1) rejects this. Is this just a missing feature, or > is there some deep reason I'm missing why the above is not OK? This isn't quite an answer to your question, but private rows might do what you need: module Sub : sig type t = private [<`A | `B] end = struct type t = [`A] end Jeremy.