From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id XAA00721; Sat, 23 Oct 2004 23:24:33 +0200 (MET DST) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f 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 XAA01376 for ; Sat, 23 Oct 2004 23:24:32 +0200 (MET DST) Received: from rproxy.gmail.com (rproxy.gmail.com [64.233.170.202]) by nez-perce.inria.fr (8.13.0/8.13.0) with ESMTP id i9NLOVSG021156 for ; Sat, 23 Oct 2004 23:24:32 +0200 Received: by rproxy.gmail.com with SMTP id 79so244730rnk for ; Sat, 23 Oct 2004 14:24:28 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:references; b=Cr+r4X26Cu9F+MFTcCGvhdffA3m+TtrFc/i4yre77SXM/hzM83FlUTzZVrgO8UAFvGP3pLr8xHgpptBtacjqzMJVCn35sZlRGg8kT0SVmCvZEr/Nt5/C7dhQes4sW4WX3DonCy8Ine2xtoCzCYtia9ew1Qj92WnAOyFnkHD/6YM= Received: by 10.38.66.24 with SMTP id o24mr370409rna; Sat, 23 Oct 2004 14:24:28 -0700 (PDT) Received: by 10.38.65.58 with HTTP; Sat, 23 Oct 2004 14:24:28 -0700 (PDT) Message-ID: Date: Sat, 23 Oct 2004 14:24:28 -0700 From: Nathaniel Gray Reply-To: Nathaniel Gray To: Jacques Garrigue Subject: Re: [Caml-list] Single-case union types as strong typedefs Cc: caml-list@inria.fr In-Reply-To: <20041023.123139.106410806.garrigue@kurims.kyoto-u.ac.jp> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit References: <20041023.123139.106410806.garrigue@kurims.kyoto-u.ac.jp> X-Miltered: at nez-perce with ID 417ACC0F.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 typedefs:01 2004:99 jacques:01 unlucky:01 boxing:01 1,3:01 1,3:01 dumped:01 haskell:01 garrigue:01 garrigue:01 caltech:01 caltech:01 concrete:02 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Sat, 23 Oct 2004 12:31:39 +0900 (JST), Jacques Garrigue wrote: > Unlucky! > With your example, there is no extra boxing involved. > I.e. (1,3) and Rpos(1,3) and Apos(1,3) all share the same physical > representation (a block with 2 fields). > The problem you describe only occurs when your single constructor has > only one argument. Really?? You're kidding. That's kind of cool but kind of strange -- why does it only optimize for composite types? > Indeed, this would be nice to have the overhead compiled away. > I don't remember whether there was a concrete reason not to. > At least one reason could be that if you add a new constructor later, you > will not be able to read dumped values of the previous type anymore, > but this doesn't seem a very strong reason. I would say not -- the whole point of using such a type would be that it only has one constructor so adding another would not be likely. > Note that Haskell has a special notation for this case, using "newtype" > rather than "type" or "data", which marks explicit this as a special > case. That's a perfectly fine approach, but I prefer the single-constructor union approach because there are no new concepts, just optimizations. Cheers, -n8 -- >>>-- Nathaniel Gray -- Caltech Computer Science ------> >>>-- Mojave Project -- http://mojave.cs.caltech.edu --> ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners