haggle alternatives and similar packages
Based on the "Data Structures" category.
Alternatively, view haggle alternatives based on common mentions on social networks and blogs.
-
Agda
Agda is a dependently typed programming language / interactive theorem prover. -
vinyl
Extensible Records for Haskell. Pull requests welcome! Come visit us on #vinyl on freenode. -
repa-convert
High performance, regular, shape polymorphic parallel arrays. -
repa-scalar
High performance, regular, shape polymorphic parallel arrays. -
repa-array
High performance, regular, shape polymorphic parallel arrays. -
parameterized-utils
A set of utilities for using indexed types including containers, equality, and comparison. -
ethereum-client-haskell
A Haskell version of an Ethereum client -
type-level-sets
Type-level sets for Haskell (with value-level counterparts and various operations) -
justified-containers
Standard containers, with keys that carry type-level proofs of their own presence. -
bytestring-trie
An efficient finite map from (byte)strings to values. -
knit
Ties the knot on data structures that reference each other by unique keys -
nonempty-containers
Efficient non-empty variants of containers data types, with full API -
claferIG
Support for reasoning on Clafer models by instantiation and counter example generation. -
igraph
Incomplete Haskell bindings to the igraph library (which is written in C) -
selections
Haskell Package for operating with selections over an underlying functor -
map-syntax
Syntax sugar and explicit semantics for statically defined maps
Static code analysis for 29 languages.
Do you think we are missing an alternative of haggle or a related project?
README
Overview
Haggle is a graph library for Haskell. It aims to support large graphs efficiently and compactly. It differs from fgl in a few ways:
- There are no partial functions in the API
- There are multiple graph representations included
- Mutable graphs can be constructed in IO or ST
- Labels for both nodes and edges are optional
The API is based on typeclasses to allow programs to be written generically and support multiple graph representations when possible. Graphs can be mutable, immutable, or inductive.
The mutable graph support is designed to allow graphs to be efficiently constructed in a mutable context and then frozen into a pure immutable form. There are multiple representations of mutable and immutable graphs to support different use cases (simple graphs, directed graphs, and bidirectional directed graphs). The different representations allow users to make decisions on time and space tradeoffs based on their algorithmic needs.
Inductive graphs (the fgl style) are also supported, while sharing some of the API with the compact immutable graphs.
See the haddocks in Data.Graph.Haggle for information and examples on using the API.
TODO
- Reach feature parity with the algorithms in fgl
- Explore more graph representations
- Explore graph serialization (the use of the opaque
Vertex
type makes it a bit tricky)