caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alain Frisch <Alain.Frisch@inria.fr>
To: padiolea@irisa.fr
Cc: Christophe TROESTLER <debian00@tiscali.be>,
	"O'Caml Mailing List" <caml-list@inria.fr>
Subject: Re: [Caml-list] Type abstraction and (polymorphic) equality
Date: Thu, 30 Jun 2005 14:57:48 +0200	[thread overview]
Message-ID: <42C3EC4C.50904@inria.fr> (raw)
In-Reply-To: <42164.131.254.50.45.1120134741.squirrel@mail.irisa.fr>

padiolea@irisa.fr wrote:
> I know many people who have "defunctorized" the Map and Set modules
> and hardcoded a call to the generic compare  to be able to use
> Set and Map as easily as you use List.
> Even with this generic compare those Set and Map seems quite good
> enough (and far better of course that using List for representing
> sets and associations).

By "good", you mean "efficient", I guess.  I understand that easy 
solutions are sometimes good enough. My claim is that in this case, the 
easy solution is also a risky one. An example of how using the easy 
solution can bite you:

http://pauillac.inria.fr/bin/caml-bugs/fixed?id=2916


>>You know better than the compiler and the runtime
>>system how your data is to be compared,
> 
> 
> Well then you are perhaps agree with the C++ folks who think
> that they better know how to manage memory than the compiler and runtime
> system.

No, I don't agree. I know that the runtime system can help me managing 
the memory. There are exceptions (I know that I need to clear explicitly 
some global tables or references to avoid memory leaks), but in general, 
the runtime system does a good job and the GC behavior is always safe, 
so there is no problem using it.

Concerning comparisons, you currently need to choose either to rely 
purely on the generic function or to implement a custom one yourself.
You cannot use your knowledge to improve the automatic behavior. The 
generic comparison is not always safe, so when you write polymorphic 
code, you simply cannot assume that generic comparison is ok.

(I don't claim that the current situation is satisfactory, only that 
considering it, generic comparison is too dangerous.)



>>There are several tools to
>>generate automatically comparison functions from type declarations.
> 
> 
> Which one ? I know Tywith but it is not in the standard distribution
> and it requires camlp4 and there is sometimes some annoying
> behaviour when you use camlp4 (such as backtraces that points
> to wrong information)

http://www.pps.jussieu.fr/~maurel/programmation/


-- Alain


      reply	other threads:[~2005-06-30 12:57 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-29  0:31 Christophe TROESTLER
2005-06-29  9:12 ` [Caml-list] " Jon Harrop
2005-06-29 10:06   ` Andreas Rossberg
2005-06-29 13:32   ` Christophe TROESTLER
2005-06-29 23:39     ` brogoff
2005-06-30  7:46       ` Christophe Raffalli
2005-06-29 20:27   ` Christophe TROESTLER
2005-06-29 20:37   ` John Skaller
2005-06-30  9:53     ` Andreas Rossberg
2005-06-30 17:08       ` brogoff
2005-06-30 17:22         ` Andreas Rossberg
2005-06-30 19:56       ` John Skaller
2005-07-01 12:49         ` Andreas Rossberg
2005-06-29  9:45 ` Jean-Christophe Filliatre
2005-06-29 17:33 ` William Lovas
2005-06-29 18:08 ` sejourne_kevin
2005-06-30  9:51   ` Andreas Rossberg
2005-06-30 19:54     ` John Skaller
2005-06-30 22:24       ` Alain Frisch
2005-06-30 12:19 ` Alain Frisch
2005-06-30 12:32   ` padiolea
2005-06-30 12:57     ` Alain Frisch [this message]

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=42C3EC4C.50904@inria.fr \
    --to=alain.frisch@inria.fr \
    --cc=caml-list@inria.fr \
    --cc=debian00@tiscali.be \
    --cc=padiolea@irisa.fr \
    /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;
as well as URLs for NNTP newsgroup(s).