Xsetxmap

An unfunctorized and Sexplib-aware version of the Set and Map modules.

Ideally, maps and sets should be polymorphic and non-functorized. However Sets and Maps represented using AVL trees are not canonical, and the generic structural comparator Pervasives.compare doesn't define an order on them - it will see differently balanced versions of the same set or map as different. The functorized interface prevents you from falling into the trap of building a Set of Sets using Pervasives.compare as the comparison function at the expense of having to instantiate a functor each time you want to use a set, even if you know that Pervasives.compare is fine.

This is why some persons have built generic versions of the standard Map and Set modules, such as in Extlib. Another problem with Set and Map is that they are not Sexplib-aware. Sexplib promises to be a widely used syntax extension that allows quasi-automatic, type-safe and human-readable serialization and deserialization of data.

The Set and Map modules also lack some basic functions (such as min_key or reverse_fold).

Hence I am defining an unfunctorized version of Set and Map. This is ongoing work, feel free to send me comments .

Here is the git repository for Xsetxmap ; to clone it type

git clone git://github.com/berke/xsetxmap.git

The old the Mercurial repository for Xsetxmap will soon go away.

2009-02-08