The adaptive-containers package
Self optimizing polymorphic container types.
Adaptive containers are polymorphic container types that use class associated data types to specialize particular element types to a more efficient container representation. The resulting structures tend to be both more time and space efficient.
A self-optimizing pair, for example, will unpack the constructors, yielding a representation for (Int,Char) requiring 8 bytes, instead of 24.
This difference can be visualized, here for the value:
[ (x,y) | x <- [1..3], y <- [x..3] ]
A regular list of pairs http://code.haskell.org/~dons/images/vacuum/tuple-list.png
An adaptive list of pairs http://code.haskell.org/~dons/images/vacuum/pair-list.png
An adaptive list of adaptive pairs http://code.haskell.org/~dons/images/vacuum/list-pair.png
Currently supported adaptive types: pairs, lists
Properties
| Versions | 0.1, 0.2, 0.2.1, 0.3 |
|---|---|
| Dependencies | base |
| License | BSD3 |
| Author | Don Stewart |
| Maintainer | Don Stewart (dons@galois.com) |
| Category | Data |
| Home page | http://code.haskell.org/~dons/code/adaptive-containers |
| Upload date | Mon Apr 6 02:56:42 UTC 2009 |
| Uploaded by | DonaldStewart |
| Built on | ghc-6.10 |
| Build failure | ghc-6.12 (log) |
Modules
- Data
Downloads
- adaptive-containers-0.2.tar.gz (Cabal source package)
- package description (included in the package)