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 SAA10335; Thu, 20 May 2004 18:23:48 +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 SAA10122 for ; Thu, 20 May 2004 18:23:47 +0200 (MET DST) Received: from smtp1.adl2.internode.on.net (smtp1.adl2.internode.on.net [203.16.214.181]) by nez-perce.inria.fr (8.12.10/8.12.10) with ESMTP id i4KGNiEV002445 for ; Thu, 20 May 2004 18:23:45 +0200 Received: from [192.168.1.200] (ppp114-11.lns1.syd3.internode.on.net [150.101.114.11]) by smtp1.adl2.internode.on.net (8.12.9/8.12.9) with ESMTP id i4KGNcZq056122; Fri, 21 May 2004 01:53:39 +0930 (CST) Subject: Re: [Caml-list] Large projects in OCaml From: skaller Reply-To: skaller@users.sourceforge.net To: Jon Harrop Cc: caml-list In-Reply-To: <200405201410.38157.jdh30@cam.ac.uk> References: <20040519172442.30413.qmail@web14522.mail.yahoo.com> <20040519213823.GA30483@redhat.com> <1085042767.19838.934.camel@pelican.wigram> <200405201410.38157.jdh30@cam.ac.uk> Content-Type: text/plain Message-Id: <1085070217.19838.1012.camel@pelican.wigram> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.2.2 (1.2.2-4) Date: 21 May 2004 02:23:38 +1000 Content-Transfer-Encoding: 7bit X-Miltered: at nez-perce with ID 40ACDB90.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 sourceforge:01 2004:99 2004:99 3.05:01 3.06:01 jacques:01 bug:01 fragile:01 unexpected:01 9660:01 glebe:01 compiler:01 ocaml:01 variants:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk On Thu, 2004-05-20 at 23:10, Jon Harrop wrote: > On Thursday 20 May 2004 09:46, skaller wrote: > > ... > > I have found several bugs in the core compiler. > Just out of curiosity, what were these bugs? Typing of polymorphic variants. The big one caused a core dump, rending 3.05 and 3.06 unusable. I also pointed at a detail of pattern matching polymorphic variants leading in part to recent changes where the more relaxed rules can occasionally lead to some indeterminism (there's an article by Jacques Garrique on this somewhere). I wouldn't call that a bug, but the new pattern matches are less fragile: basically, the old ones refused to allow redundant or useless cases (involving guards) because it confused the typing. The problem was if you commented out a tag somewhere else it gratuitously broke the match typing, and you'd have to comment out the case in the match too (even when all you'd done is restrict the input expression tag set). Now, there's a risk that guarded patterns aren't tested sequentially, so you might end up in an unexpected match handler if you weren't aware of this (you can always nest matches to restore the determinism). At least I think that's it :) Polymorphic variants involve some interesting language design compromises! -- John Skaller, mailto:skaller@users.sf.net voice: 061-2-9660-0850, snail: PO BOX 401 Glebe NSW 2037 Australia Checkout the Felix programming language http://felix.sf.net ------------------- 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