Another reason is performance. The generic, polymorphic comparison function drops you out into C (which has a cost) and has to compare every single possible value combination. A customized comparison function stays in ocaml and handles only what you need ie. it's driven by type information that the generic function lacks.

Yotam

On Wed, Sep 10, 2014 at 7:27 AM, Gerd Stolpmann <info@gerd-stolpmann.de> wrote:
Am Mittwoch, den 10.09.2014, 10:56 +0200 schrieb SF Markus Elfring:
> Hello,
>
> I extended my software development experience a bit for the programming language
> "OCaml". I find my knowledge incomplete here to resolve an issue like
> "Comparison function application" alone.
> https://github.com/elfring/OTCL/issues/4

There are three reasons why you want to have your own comparison
function:

- You need a different ordering than provided by Pervasives.compare.
  For compound types the ordering of compare is implementation-defined,
  and currently the implementation prefers the fastest way of comparing.
  E.g. if you compare arrays, you don't get a lexicographic ordering.
  This is sometimes not what you need.
- Your values are cyclic. compare may hang if you try to compare cyclic
  values.
- Your values contains parts that cannot be compared, like functions.
  With a custom comparison function you can skip these parts.

Gerd

> How do you think about to discuss corresponding implementation details for an
> evolving class library?
>
> I would appreciate your advices.
>
> Regards,
> Markus
>

--
------------------------------------------------------------
Gerd Stolpmann, Darmstadt, Germany    gerd@gerd-stolpmann.de
My OCaml site:          http://www.camlcity.org
Contact details:        http://www.camlcity.org/contact.html
Company homepage:       http://www.gerd-stolpmann.de
------------------------------------------------------------