Fast and flexible k-d trees for various types of point queries.


Version on this page:0.2.5
LTS Haskell 22.29:0.2.6
Stackage Nightly 2024-07-16:0.2.6
Latest on Hackage:0.2.6

See all snapshots kdt appears in

MIT licensed by Luis G. Torres
Maintained by [email protected]
This version can be pinned in stack with:kdt-0.2.5@sha256:c51a839bcc85d479ac6adf24ef7862269e99eaa529d7effef3c14f003ae8c156,3431

Module documentation for 0.2.5

This package includes static and dynamic versions of k-d trees, as well as "Map" variants that store data at each point in the k-d tree structure. Supports nearest neighbor, k nearest neighbors, points within a given radius, and points within a given range. To learn to use this package, start with the documentation for the Data.KdTree.Static module.



  • Fixed a minor compile error under GHC 9 caused by ambiguous use of “singleton”.


  • Now exporting KdMap.Static.TreeNode to facilitate advanced usage of the library.


  • For internal priority queue implementation, use the heap library instead of pqueue library in order to build on ghc 7.10.


  • Relax lower version bound on QuickCheck to 2.5.


  • Relax upper version constraint for MonadRandom (benchmarking code)
  • Add Data.Point2d as dependency of executables so tests and benchmarks can be built from the archive downloaded on Hackage.


  • Lots and lots of renaming all throughout to more closely match terminology used in containers.
  • Removed kdt library dependency on QuickCheck (if not building testing code).
  • Removed testing module Point2d from public API
  • All structures now have Show instance
  • Static variants now have functions for dynamically inserting new points into existing structure, with caveat that these functions do not maintain balanced tree structure.