Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] exceptions and the polymorphic equality
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ 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