- Add some
reflexive_equal
andreflexive_compare
functions - Add
min_binding_inter
for maps,min_elt_inter
for sets and their max counterparts - Add
difference
andsymmetric_difference
function to maps (and adddifference
toWithForeign
) - Add
diff
functions to sets - Internal refactor.
- Added hash-consed nodes and functors to build hash-consed maps and sets.
- Added new functions
fold_on_nonequal_inter
andfold_on_nonequal_union
to maps. - Now support using negative keys, removed
zarith
dependency. - Fixed some bugs
Breaking changes:
- Renamed
MakeCustom
toMakeCustomMap
, added new functorMakeCustomSet
.MakeCustomMap
changed to take a new argument to specify the'a value
type. - Renamed
MakeCustomHeterogeneous
toMakeCustomHeterogeneousMap
, added new functorMakeCustomHeterogeneousSet
. - Renamed
NODE_WITH_ID.get_id
toNODE_WITH_ID.to_int
, this allows using instancesNODE_WITH_ID
directly as aKEY
. - Renamed
VALUE
toHETEROGENEOUS_VALUE
, added aVALUE
module type (previously unnamed). - Renamed
min_binding
,max_binding
,pop_minimum
,pop_maximum
,min_elt
andmax_elt
tounsigned_min_binding
,unsigned_max_binding
,pop_unsigned_minimum
,pop_unsigned_maximum
,unsigned_min_elt
andunsigned_max_elt
respectively, to clarify that these functions consider negative numbers as larger than positive ones.
New features:
- Added new interface
MAP_WITH_VALUE
which is the same asMAP
but with a custom type'a value
instead of just'a
. - Added
HashconsedNode
,HashconsedSetNode
as well as four functors to create hash-consed heterogeneous/homogeneous maps/sets:MakeHashconsedMap
,MakeHashconsedSet
,MakeHashconsedHeterogeneousMap
andMakeHashconsedHeterogeneousSet
. - Now support using negative keys. Trees are built using the bitwise representation
of integer, meaning they effectively use an unsigned order. Negative keys are
considered bigger than positive keys,
0
is the minimal number and-1
the maximal one. - Added new functions
fold_on_nonequal_inter
andfold_on_nonequal_union
to maps.
Bug fixes:
- Fixed a bug where
NodeWithId
wasn't incrementing ids properly zarith
is no longer a dependency, used GCC's__builtin_clz
as a faster method of finding an integer's highest bit.- Fixed a bug where
pop_minimum
andpop_maximum
could throw a private exceptionDissappeared
when usingWeakNode
. - Fixed a possible assertion error when using
idempotent_subset_domain_forall2
withWeakNode
. - Fix compilation warnings when compiling on ocaml 5.2.
- Initial release of Patricia Tree