Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
on objects, equality and playing nicely with the stdlib
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Jon Harrop <jon@f...>
Subject: Re: [Caml-list] on objects, equality and playing nicely with the stdlib
On Thursday 29 May 2008 05:50:33 Peng Zang wrote:
> Hello list,
> Recently, in building some toy games, I've started using objects.  I've
> been pleased with them and often find the subtyping convenient.
> However, I've run into some issues with the standard physical equality of
> objects that the (=) operator performs.  Namely, it makes several stdlib
> modules difficult to use.  Modules that provides a polymorphic (generic)
> interface such as Hashtbl, List, Stack, etc.. rely on the (=) operator. 
> This is fine as long as it happens to be what I need.  The minute I
> introduce my own equality however, things break down.
> What is the best way to go about using the stdlib (or similar) when you
> have your own equality function?  This problem almost never shows up if you
> just stick with basic data types, but with objects you quickly run into it.

Hi Peng,

You can use the Hashtbl.Make functor to create hash tables using your own 
equality (and hashing) function. Other than that, you're screwed: resort to 
cut and paste from the stdlib.

Dr Jon D Harrop, Flying Frog Consultancy Ltd.