Browse thread
[Caml-list] exceptions and the polymorphic equality
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Nils Goesche <cartan@c...> |
| Subject: | Re: [Caml-list] exceptions and the polymorphic equality |
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 <CTRL-G> 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