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 SAA16820; Wed, 8 Oct 2003 18:49:13 +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 SAA17463 for ; Wed, 8 Oct 2003 18:49:11 +0200 (MET DST) Received: from indyio.rz.uni-saarland.de (indyio.rz.uni-saarland.de [134.96.7.3]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id h98GnA105538 for ; Wed, 8 Oct 2003 18:49:10 +0200 (MET DST) Received: from uni-sb.de (uni-sb.de [134.96.7.230]) by indyio.rz.uni-saarland.de (8.12.10/8.12.9) with ESMTP id h98GnAK728427910 for ; Wed, 8 Oct 2003 18:49:10 +0200 (CST) Received: from cs.uni-sb.de (cs.uni-sb.de [134.96.252.31]) by uni-sb.de (8.12.10/2003073000) with ESMTP id h98Gn9Ms022516 for ; Wed, 8 Oct 2003 18:49:09 +0200 (CEST) Received: from mail.cs.uni-sb.de (mail.cs.uni-sb.de [134.96.254.200]) by cs.uni-sb.de (8.12.10/2003091100) with ESMTP id h98Gn9M5028025 for ; Wed, 8 Oct 2003 18:49:09 +0200 (CEST) Received: from ps.uni-sb.de (grizzly.ps.uni-sb.de [134.96.186.68]) by mail.cs.uni-sb.de (8.12.10/2003073000) with ESMTP id h98Gn5fI000436 for ; Wed, 8 Oct 2003 18:49:08 +0200 (CEST) X-Authentication-Warning: email: Host grizzly.ps.uni-sb.de [134.96.186.68] claimed to be ps.uni-sb.de Received: from ps.uni-sb.de (zoidberg.ps.uni-sb.de [134.96.186.121]) by ps.uni-sb.de (8.11.6/8.11.0) with ESMTP id h98GXpS20237; Wed, 8 Oct 2003 18:33:51 +0200 Message-ID: <3F843C6E.8060407@ps.uni-sb.de> Date: Wed, 08 Oct 2003 18:33:50 +0200 From: Andreas Rossberg User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20021003 X-Accept-Language: de, en MIME-Version: 1.0 To: caml-list@inria.fr Subject: Re: [Caml-list] Constructors as functions and tuples in constructors References: <3F843648.3030200@cs.washington.edu> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-DCC-UTR-Metrics: email 1060; Body=2 Fuz1=2 Fuz2=2 X-Loop: caml-list@inria.fr X-Spam: no; 0.00; rossberg:01 rossberg:01 uni-sb:01 caml-list:01 grossman:01 parens:01 uni-sb:01 darkened:01 munching:01 repetitive:01 kristian:01 compiler:01 workaround:01 int:01 int:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Dan Grossman wrote: > >> Second, it would also be nice not to have "the concept of constructor >> arity", and treat the code below as correct: >> >> type t = A of int * int >> let _ = match A (17, 0) with >> A z -> match z with (x, y) -> () > > Works with type t = A of (int * int). You put the parens in. So the > choice is yours. The advantage of leaving them out is usually performance. That is not true. It would be quite trivial for the compiler to translate A z -> e into the equivalent of A(z1,z2) -> let z = (z1,z2) in e without affecting performance of other programs in any way. Likewise, A z could be transformed into let (z1,z2) = z in A(z1,z2) instead of rejecting it. OTOH, your workaround certainly decreases performance for type t, as other pointed out. -- Andreas Rossberg, rossberg@ps.uni-sb.de "Computer games don't affect kids; I mean if Pac Man affected us as kids, we would all be running around in darkened rooms, munching magic pills, and listening to repetitive electronic music." - Kristian Wilson, Nintendo Inc. ------------------- 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