From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id TAA16302 for caml-redistribution; Mon, 11 Oct 1999 19:26:12 +0200 (MET DST) Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id BAA07817 for ; Mon, 11 Oct 1999 01:28:27 +0200 (MET DST) Received: from igw3.watson.ibm.com (igw3.watson.ibm.com [198.81.209.18]) by nez-perce.inria.fr (8.8.7/8.8.7) with ESMTP id BAA27013; Mon, 11 Oct 1999 01:28:25 +0200 (MET DST) From: chet@watson.ibm.com Received: from mailhub.watson.ibm.com (mailhub.watson.ibm.com [9.2.250.97]) by igw3.watson.ibm.com (8.9.3/8.9.3/05-14-1999) with ESMTP id TAA11910; Sun, 10 Oct 1999 19:28:24 -0400 Received: from nautilus.chet.org (lig32-224-156-103.us.lig-dial.ibm.com [32.224.156.103]) by mailhub.watson.ibm.com (8.8.7/Feb-20-98) with ESMTP id TAA18550; Sun, 10 Oct 1999 19:28:17 -0400 Received: from bismarck.chet.org (root@bismarck.chet.org [192.168.10.15]) by nautilus.chet.org (8.8.8/8.8.8/Debian/GNU) with ESMTP id SAA10002; Sun, 10 Oct 1999 18:41:22 -0400 Received: from bismarck.chet.org (chet@localhost [127.0.0.1]) by bismarck.chet.org (8.8.8/8.8.8/Debian/GNU) with ESMTP id SAA17988; Sun, 10 Oct 1999 18:38:44 -0400 Message-Id: <199910102238.SAA17988@bismarck.chet.org> To: William Chesters cc: caml-list@inria.fr, Pierre.Weis@inria.fr Subject: Re: Proposal for study: Add a categorical Initial type to ocaml In-reply-to: Your message of Sun, 10 Oct 1999 22:05:26 BST. <24984.199910102105@buckie> Date: Sun, 10 Oct 1999 18:38:44 -0400 Sender: weis Of course, it is problematic that "None" and "Some None" are indistinguishable. But is it a reason to not have such a facility (as a storage-cost-free "option" type constructor)? I'd like to believe that the answer is "no" -- that the efficiency values of such a type-constructor outweigh the semantic difficulties. Of course, there's only one way to prove that -- by implementing both and trying it out on large programs. --chet-- >>>>> "WC" == William Chesters writes: WC> The problem is that if you have a value of the type `int WC> option option', you have to be able to distinguish between WC> `None' and `Some None'! If both the enumeration-indirections WC> are elided, you can't; if only one of them is, you have WC> inconsistency which would presumably have to be resolved using WC> whole-program optimisation or something.