The comfort-graph package
This graph structure is based on Data.Map and allows any Ord type for nodes and allows directed, undirected and more edge types. There is no need to map nodes to integer numbers. This makes handling in applications much more comfortable, thus the package name.
Currently the package does not contain any advanced algorithm, just the data structure and some manipulation functions.
The edge type can be freely chosen. This allows great flexibility but it is a bit more cumbersome to do in Haskell 98. Examples of edge types:
DirEdge: Edges in a directed graph
UndirEdge: Edges in an undirected graph
EitherEdge: For graphs containing both directed and undirected edges
You may define an edge type with an additional identifier in order to support multiple edges between the same pair of nodes.
Using type functions on the node type you may even define an edge type for nodes from a Cartesian product, where only "horizontal" and "vertical" edges are allowed.
For examples see the linear-circuit package and its tests. The ResistorCube test demonstrates non-integer node types and the Tree test demonstrates multigraphs.
The package is plain Haskell 98.
fgl: standard package for graph processing with many graph algorithms but cumbersome data structure with Int numbered nodes
|Versions||0.0, 0.0.0.1, 0.0.0.2, 0.0.0.3, 0.0.1, 0.0.2|
|Dependencies||base (>=4.5 && <5), containers (>=0.4 && <0.6), QuickCheck (>=2.5 && <3), transformers (==0.5.*), utility-ht (>=0.0.10 && <0.1) [details]|
|Source repository||this: darcs get http://hub.darcs.net/thielema/comfort-graph --tag 0.0.2
head: darcs get http://hub.darcs.net/thielema/comfort-graph
|Uploaded||Wed Mar 22 20:36:29 UTC 2017 by HenningThielemann|
|Distributions||LTSHaskell:0.0.2, NixOS:0.0.2, Stackage:0.0.2, Tumbleweed:0.0.2|
|Downloads||497 total (24 in the last 30 days)|
|Status||Docs available [build log]
Last success reported on 2017-03-22 [all 1 reports]
Hackage Matrix CI
For package maintainers and hackage trustees