package patricia-tree
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page
Patricia Tree data structure in OCaml for maps and sets. Supports generic key-value pairs
Install
dune-project
Dependency
Authors
Maintainers
Sources
patricia-tree-0.12.0.tbz
sha256=88f2c7c92d609e5a92d2b6242d1d355c85273200f0a1e7e9eab858c4ded09650
sha512=89083fb58c894f5af255172c7bf43e4871bc31afcf86c4cd622773984cd8550ea1e61b31c676c431b6ba5eaf4b4e562ffeaa0cfba893121d783b5cceb7a55623
doc/CHANGELOG.html
v0.12.0 - 2026-01-19
- Specify that hash-consed and weak nodes are not thread safe (issue #17)
- Add
MutexProtectNodefunctors to enable multithreaded use of non-thread safe nodes (#24). - Also add
Make[Heterogeneous]Hashconsed[Set|Map]WithMutexfunctors usingMutexProtectNodefor convenience (#24). - Fix a bug with
nonreflexive_same_domain_forall2(by julow in #19)
Dev changes
- Add coverage with bisect_ppx (by julow in #20)
- Add model based qcheck test (by julow in #21)
- Add benchmarks (by julow in #22)
v0.11.0 - 2025-01-27
- Add some
reflexive_equalandreflexive_comparefunctions - Add
min_binding_interfor maps,min_elt_interfor sets and their max counterparts - Add
differenceandsymmetric_differencefunction to maps (and adddifferencetoWithForeign) - Add
difffunctions to sets - Internal refactor.
v0.10.0 - 2024-06-01
Main changes
- Added hash-consed nodes and functors to build hash-consed maps and sets.
- Added new functions
fold_on_nonequal_interandfold_on_nonequal_unionto maps. - Now support using negative keys, removed
zarithdependency. - Fixed some bugs
Detailed changes
Breaking changes:
- Renamed
MakeCustomtoMakeCustomMap, added new functorMakeCustomSet.MakeCustomMapchanged to take a new argument to specify the'a valuetype. - Renamed
MakeCustomHeterogeneoustoMakeCustomHeterogeneousMap, added new functorMakeCustomHeterogeneousSet. - Renamed
NODE_WITH_ID.get_idtoNODE_WITH_ID.to_int, this allows using instancesNODE_WITH_IDdirectly as aKEY. - Renamed
VALUEtoHETEROGENEOUS_VALUE, added aVALUEmodule type (previously unnamed). - Renamed
min_binding,max_binding,pop_minimum,pop_maximum,min_eltandmax_elttounsigned_min_binding,unsigned_max_binding,pop_unsigned_minimum,pop_unsigned_maximum,unsigned_min_eltandunsigned_max_eltrespectively, to clarify that these functions consider negative numbers as larger than positive ones.
New features:
- Added new interface
MAP_WITH_VALUEwhich is the same asMAPbut with a custom type'a valueinstead of just'a. - Added
HashconsedNode,HashconsedSetNodeas well as four functors to create hash-consed heterogeneous/homogeneous maps/sets:MakeHashconsedMap,MakeHashconsedSet,MakeHashconsedHeterogeneousMapandMakeHashconsedHeterogeneousSet. - 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,
0is the minimal number and-1the maximal one. - Added new functions
fold_on_nonequal_interandfold_on_nonequal_unionto maps.
Bug fixes:
- Fixed a bug where
NodeWithIdwasn't incrementing ids properly zarithis no longer a dependency, used GCC's__builtin_clzas a faster method of finding an integer's highest bit.- Fixed a bug where
pop_minimumandpop_maximumcould throw a private exceptionDissappearedwhen usingWeakNode. - Fixed a possible assertion error when using
idempotent_subset_domain_forall2withWeakNode. - Fix compilation warnings when compiling on ocaml 5.2.
v0.9.0 - 2024-04-18
- Initial release of Patricia Tree
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page