Fast generic linear-time sorting, joins and container construction.
|LTS Haskell 20.23:||0.5@rev:2|
|Stackage Nightly 2023-06-04:||0.5@rev:2|
|Latest on Hackage:||0.5@rev:2|
Maintained by Edward A. Kmett
This version can be pinned in stack with:
Depends on 11 packages(full list with versions):
This package provides linear time sorting, partitioning, and joins for a wide array of Haskell data types. This work is based on a “final encoding” of the ideas presented in multiple papers and talks by Fritz Henglein.
By adopting a final encoding we can enjoy many instances for standard classes, lawfully, without quotienting.
Contributions and bug reports are welcome!
Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.
Eqis a superclass of
Ordis a superclass of
- Drop support for GHC prior 8
- GHC-9.0 compatibility
- Fixed a corner case where
conquerwould lie and return an empty equivalence class when fed no inputs.
- ghc 8 support
groupingis now much more efficient.
groupingis now productive. This means it can start spitting out results as it goes! To do this I created the
promisespackage and switched to using it behind the scenes for many combinators that consume a
Group. This has a bunch of knock-on effects:
groupingis now working properly with respect to its law!
groupingnow uses an American-flag style top-down radix sort rather than a bottom up radix sort for all operations. This is sadly required for productivity. This will use a lot more memory for intermediate arrays, as we don’t get to return them to storage after we’re done.
- We now use much smaller intermediate arrays for
grouping. Should we do the same for
- Initialized repository