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 QAA14740; Tue, 17 Jul 2001 16:35:45 +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 QAA14689 for ; Tue, 17 Jul 2001 16:35:44 +0200 (MET DST) Received: from moutvdom00.kundenserver.de (moutvdom00.kundenserver.de [195.20.224.149]) by nez-perce.inria.fr (8.11.1/8.10.0) with ESMTP id f6HEZhH00946 for ; Tue, 17 Jul 2001 16:35:43 +0200 (MET DST) Received: from [195.20.224.220] (helo=mrvdom04.kundenserver.de) by moutvdom00.kundenserver.de with esmtp (Exim 2.12 #2) id 15MVws-0006FK-00 for caml-list@inria.fr; Tue, 17 Jul 2001 16:35:42 +0200 Received: from [62.154.173.138] (helo=pc022.bln.elmeg.de) by mrvdom04.kundenserver.de with esmtp (Exim 2.12 #2) id 15MVwr-0003qp-00 for caml-list@inria.fr; Tue, 17 Jul 2001 16:35:41 +0200 To: caml-list@inria.fr Subject: Re: [Caml-list] exceptions and the polymorphic equality References: <20010715220500D.sumii@yl.is.s.u-tokyo.ac.jp> <200107161511.RAA23787@pauillac.inria.fr> <20010717095912O.sumii@yl.is.s.u-tokyo.ac.jp> From: Nils Goesche Date: 17 Jul 2001 16:35:31 +0200 In-Reply-To: <20010717095912O.sumii@yl.is.s.u-tokyo.ac.jp> Message-ID: User-Agent: Gnus/5.0808 (Gnus v5.8.8) Emacs/20.7 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk eijiro_sumii@anet.ne.jp writes: > > On the other hand, the structural equality (=) when applied to > > exceptions and constructors is not completely specified, hence > > unreliable. > > I see, this makes sense - indeed, exn is not an equality type in SML. > > > You're right, having e <> e' should be desirable. However, in this > > case you should not test structural equality, since it is very likely > > the case that e and e' are represented by the same kind of value. You > > should test identity (==) instead: > > > > # e == e';; > > - : bool = false > > > > That's what the compiler generates when pattern matching exception > > values (more precisely it uses == for the exception constructor and > > regular pattern matching for the rest of the pattern). > > Several people have suggested using == instead of =, but doing so > seems even more problematic because: > > Objective Caml version 3.01 > > # exception Foo;; > exception Foo > # Foo == Foo;; > - : bool = false > # Hm, strange :-) Apparently, `Foo' is a constant constructor, and it should work like this: # type bingo = Bingo | Bongo;; type bingo = Bingo | Bongo # Bingo == Bingo;; - : bool = true OTOH, we also have # 2 == 2;; - : bool = true # 2.0 == 2.0;; - : bool = false So, this still doesn't seem like a bug to me... Regards, -- Nils Goesche "Don't ask for whom the tolls." PGP key ID 0x42B32FC9 ------------------- Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr