# Difference between revisions of "Applications and libraries/Data structures"

From HaskellWiki

DonStewart (talk | contribs) (+ 4 or 5 more data structure libs, from the lambdabot archives) |
|||

Line 25: | Line 25: | ||

:The Partial library provides a partial order class. It also provides routines for generating a Hasse diagram from a set and a partial order. Renderers are provided for the abstract Hasse diagram representation into LaTeX (via Xy-pic) and into dot, the format for AT&T's Graphviz tools. Since no horizontal sorting is done, the Xy-pic output is rather poor at present; dot does a much better job with its layout optimisation algorithm. |
:The Partial library provides a partial order class. It also provides routines for generating a Hasse diagram from a set and a partial order. Renderers are provided for the abstract Hasse diagram representation into LaTeX (via Xy-pic) and into dot, the format for AT&T's Graphviz tools. Since no horizontal sorting is done, the Xy-pic output is rather poor at present; dot does a much better job with its layout optimisation algorithm. |
||

− | ;[http://www.pms.informatik.uni-muenchen.de/mitarbeiter/panne/haskell_libs/Binary.html Binary/BinArray library] {{dead link}} |
||

+ | ;[http://web.engr.oregonstate.edu/~erwig/diet/ Discrete Interval Encoding Trees] |
||

⚫ | |||

+ | :The discrete interval encoding tree is a structure for storing subsets of types having a total order and a predecessor and a successor function. |
||

+ | |||

+ | ;[http://www.n-heptane.com/nhlab/repos/NewBinary New binary] |
||

⚫ | |||

+ | |||

+ | ;[http://www.cs.helsinki.fi/u/ekarttun/SerTH/ SerTH] |
||

+ | :SerTH is a binary serialization library for Haskell. It supports serializing cyclic datatypes in a fast binary format. SerTH uses template haskell for deriving the serializing interface for new datatypes. |
||

+ | |||

+ | ;[http://sourceforge.net/projects/ranged-sets/ Ranged Sets] |
||

+ | :A ranged set is a list of non-overlapping ranges. The ranges have upper and lower boundaries, and a boundary divides the base type into values above and below. No value can ever sit on a boundary. So you can have the set {2.0 < x <= 3.0, 5.3 < x < 6} |
||

+ | |||

+ | ;[http://www.cwi.nl/~ralf/HList/ HList] |
||

+ | :A heterogeneous collection is a datatype that is capable of storing data of different types, while providing operations for look-up, update, iteration, and others. There are various kinds of heterogeneous collections, differing in representation, invariants, and access operations. |

## Revision as of 04:04, 25 March 2006

*The copyright status of this work is not known. Please help resolve this on the talk page.*

*This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Applications and libraries.*

## Haskell Libraries and Tools for Data Structures

- Edison
- This is the latest version of the Edison library of efficient data structures. There are also earlier version of Edison by Chris Okasaki. It provides sequences, finite maps, priority queues, and sets/bags. (overview paper).

- Data.Tree.AVL
- An implementation of AVL trees and related utilities.

- Fast Packed Strings
- The FPS library provides mmapped and malloc'd packed strings (byte arrays held by a ForeignPtr), along with a list interface to these strings. It lets you do extremely fast IO in Haskell; in some cases, even faster than typical C implementations, as well as conserving space.

- FGL - A Functional Graph Library
- The functional graph library provides a collection of graph operations.

- Strafunski
- A bundle for generic programming. It provides programming support for generic traversal as useful in the implementation of program transformations.

- The Haskell STate Preprocessor
- This is a short preprocessor for stateful Haskell programs. It aleviates the pain of performing single array lookup/write/update functions with some syntax to support it. It also supports hash table operations based on the HashTable implementation available from the author. Finally, it supports monadic if and monadic case constructions. It is lightweight in the sense that it performs no syntactic analysis and is essentially a character transformer.

- Partial v0.1
- The Partial library provides a partial order class. It also provides routines for generating a Hasse diagram from a set and a partial order. Renderers are provided for the abstract Hasse diagram representation into LaTeX (via Xy-pic) and into dot, the format for AT&T's Graphviz tools. Since no horizontal sorting is done, the Xy-pic output is rather poor at present; dot does a much better job with its layout optimisation algorithm.

- Discrete Interval Encoding Trees
- The discrete interval encoding tree is a structure for storing subsets of types having a total order and a predecessor and a successor function.

- New binary
- A port of Malcolm Wallace's Binary library from NHC, offering facilities for heap compression and binary I/O. The de-facto standard for binary IO in Haskell

- SerTH
- SerTH is a binary serialization library for Haskell. It supports serializing cyclic datatypes in a fast binary format. SerTH uses template haskell for deriving the serializing interface for new datatypes.

- Ranged Sets
- A ranged set is a list of non-overlapping ranges. The ranges have upper and lower boundaries, and a boundary divides the base type into values above and below. No value can ever sit on a boundary. So you can have the set {2.0 < x <= 3.0, 5.3 < x < 6}

- HList
- A heterogeneous collection is a datatype that is capable of storing data of different types, while providing operations for look-up, update, iteration, and others. There are various kinds of heterogeneous collections, differing in representation, invariants, and access operations.