From: brogoff@speakeasy.net
To: Neel Krishnaswami <neelk@alum.mit.edu>
Cc: Ocaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] How can I check for the use of polymorphic equality?
Date: Mon, 31 Mar 2003 09:33:08 -0800 (PST) [thread overview]
Message-ID: <Pine.LNX.4.44.0303310905370.372-100000@grace.speakeasy.net> (raw)
In-Reply-To: <16008.29181.437301.517752@h00045a4799d6.ne.client2.attbi.com>
Quite a conundrum, since equality wouldn't be polymorphic if it didn't work for
all (non-functional) values!
Following that silly parenthetical comment, you could explicitly tag values with
a functional fields. As long as they are the first field you're OK (try
swapping the field order if you don't see what I mean).
# type 'a no_eq = { no_eq_tag : unit -> int; data : 'a };;
type 'a no_eq = { no_eq_tag : unit -> int; data : 'a; }
# let x0 = {data = 0; no_eq_tag = fun () -> 0};;
val x0 : int no_eq = {no_eq_tag = <fun>; data = 0}
# let x1 = {data = 1; no_eq_tag = fun () -> 1};;
val x1 : int no_eq = {no_eq_tag = <fun>; data = 1}
# x0 = x1;;
Exception: Invalid_argument "equal: functional value".
You can use tuples isntead of records if you wish too. BTW, this tagging
strikes me as very ugly.
A cleaner solution IMO is be to use your own order data type patterned after
every other FPL, type order = Less | Equal | Greater, or your own equality data
type, to avoid this if it starts becoming a problem.
Equality is a rough edge in just about every programming language.
-- Brian
On Mon, 31 Mar 2003, Neel Krishnaswami wrote:
>
> I spent the last few hours tracking down a bug that was the result of
> accidentally using the polymorphic equality rather than a custom
> comparison function. Is there any way I can tell the compiler not to
> allow the use of polymorphic equality at certain types, or even just
> to raise an exception when it tries to compare values of those types?
>
> --
> Neel Krishnaswami
> neelk@alum.mit.edu
>
> -------------------
> 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
>
-------------------
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
next prev parent reply other threads:[~2003-03-31 17:33 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <ocaml@tagger.yapper.org>
2003-03-31 16:51 ` Neel Krishnaswami
2003-03-31 17:33 ` brogoff [this message]
2003-04-03 19:44 ` Jason Hickey
2003-04-03 20:40 ` Pierre Weis
2003-04-03 20:53 ` Chris Hecker
2003-04-04 8:46 ` Pierre Weis
2003-04-04 19:05 ` Jason Hickey
2003-04-04 9:10 ` Andreas Rossberg
2003-05-14 11:43 ` [Caml-list] ocaml and large development projects Traudt, Mark
2003-05-14 15:52 ` Jason Hickey
2003-05-18 5:32 ` Chris Hecker
2003-05-18 5:44 ` David Brown
2003-05-18 6:10 ` Chris Hecker
2003-05-18 11:13 ` John Carr
2003-05-18 16:51 ` Ed L Cashin
2003-05-18 18:08 ` Lex Stein
2003-05-18 19:08 ` Ed L Cashin
2003-05-18 19:55 ` Lex Stein
2003-05-19 8:13 ` Markus Mottl
2003-05-19 8:33 ` Nicolas Cannasse
2003-06-02 21:59 ` John Max Skaller
2003-05-18 23:19 ` Chris Hecker
2003-05-18 14:38 ` David Brown
2003-05-18 16:00 ` Ville-Pertti Keinonen
2003-05-19 15:36 ` Brian Hurt
2003-05-19 19:31 ` Chris Hecker
2003-05-19 23:39 ` Seth Kurtzberg
2003-05-20 8:07 ` [Caml-list] ocaml as *.so (was: ...and large development projects) Wolfgang Müller
2003-05-20 8:42 ` [Caml-list] Reading a file Siegfried Gonzi
2003-05-20 10:21 ` Mattias Waldau
2003-05-20 10:48 ` Nicolas Cannasse
2003-05-20 10:55 ` Markus Mottl
2003-05-20 13:20 ` Michal Moskal
2003-05-20 12:21 ` Siegfried Gonzi
2003-05-21 6:11 ` Siegfried Gonzi
2003-05-21 6:48 ` Siegfried Gonzi
2003-05-21 6:53 ` Siegfried Gonzi
2003-05-21 9:16 ` Markus Mottl
2003-05-21 10:04 ` Eray Ozkural
2003-05-21 16:20 ` brogoff
2003-05-21 8:21 ` Michal Moskal
2003-05-21 7:24 ` [Caml-list] PsiLAB works fine under Linux SuSE 8 Siegfried Gonzi
2003-05-21 9:11 ` [Caml-list] Reading a file Markus Mottl
2003-05-22 6:27 ` Siegfried Gonzi
2003-05-22 10:26 ` Markus Mottl
2003-05-23 5:59 ` Siegfried Gonzi
2003-05-23 6:04 ` Siegfried Gonzi
2003-05-20 10:45 ` [Caml-list] ocaml as *.so (was: ...and large development projects) Nicolas Cannasse
2003-05-20 11:17 ` Wolfgang Müller
2003-05-20 11:31 ` Nicolas Cannasse
2003-05-20 11:40 ` Wolfgang Müller
2003-06-02 22:40 ` John Max Skaller
2003-06-03 13:26 ` [Caml-list] ocaml as *.so Remi Vanicat
2003-06-02 22:42 ` [Caml-list] ocaml and large development projects John Max Skaller
2003-06-02 21:24 ` John Max Skaller
2003-06-02 21:12 ` John Max Skaller
2003-06-03 0:31 ` Chris Hecker
2003-06-03 10:13 ` Michal Moskal
2003-06-03 18:12 ` Chris Hecker
2003-06-03 14:31 ` art yerkes
2003-06-03 21:55 ` Jason Hickey
2003-06-03 22:42 ` Chris Hecker
2003-06-06 23:46 ` John Max Skaller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.44.0303310905370.372-100000@grace.speakeasy.net \
--to=brogoff@speakeasy.net \
--cc=caml-list@inria.fr \
--cc=neelk@alum.mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox