# algebraic-graphs: A library for algebraic graph construction and transformation

Alga is a library for algebraic construction and manipulation of graphs in Haskell. See this paper for the motivation behind the library, the underlying theory and implementation details.

The top-level module
Algebra.Graph
defines the main data type for *algebraic graphs*
Graph,
as well as associated algorithms. For type-safe representation and
manipulation of *non-empty algebraic graphs*, see
Algebra.Graph.NonEmpty.
Furthermore, *algebraic graphs with edge labels* are implemented in
Algebra.Graph.Labelled.

The library also provides conventional graph data structures, such as
Algebra.Graph.AdjacencyMap
along with its various flavours: adjacency maps specialised to graphs with
vertices of type `Int`

(Algebra.Graph.AdjacencyIntMap),
non-empty adjacency maps
(Algebra.Graph.NonEmpty.AdjacencyMap),
and adjacency maps with edge labels
(Algebra.Graph.Labelled.AdjacencyMap).
A large part of the API of algebraic graphs and adjacency maps is available
through the `Foldable`

-like type class
Algebra.Graph.ToGraph.

The type classes defined in Algebra.Graph.Class and Algebra.Graph.HigherKinded.Class can be used for polymorphic construction and manipulation of graphs. Also see Algebra.Graph.Fold that defines the Boehm-Berarducci encoding of algebraic graphs.

This is an experimental library and the API is expected to remain unstable until version 1.0.0. Please consider contributing to the on-going discussions on the library API.

[Skip to Readme]

Versions [faq] | 0.0.1, 0.0.2, 0.0.3, 0.0.4, 0.0.5, 0.1.0, 0.1.1, 0.1.1.1, 0.2, 0.3 |
---|---|

Change log | CHANGES.md |

Dependencies | array (>=0.4 && <0.6), base (>=4.7 && <5), base-compat (>=0.9.1 && <0.11), containers (>=0.5.5.1 && <0.8), deepseq (>=1.3.0.1 && <1.5), mtl (>=2.1 && <2.3), semigroups (==0.18.3.*) [details] |

License | MIT |

Copyright | Andrey Mokhov, 2016-2018 |

Author | Andrey Mokhov <andrey.mokhov@gmail.com>, github: @snowleopard |

Maintainer | Andrey Mokhov <andrey.mokhov@gmail.com>, github: @snowleopard, Alexandre Moine <alexandre@moine.me>, github: @nobrakal |

Category | Algebra, Algorithms, Data Structures, Graphs |

Home page | https://github.com/snowleopard/alga |

Source repo | head: git clone https://github.com/snowleopard/alga.git |

Uploaded | by snowleopard at Thu Nov 29 23:38:58 UTC 2018 |

Distributions | LTSHaskell:0.3, NixOS:0.3, Stackage:0.3 |

Downloads | 2283 total (239 in the last 30 days) |

Rating | 2.5 (votes: 5) [estimated by rule of succession] |

Your Rating | |

Status | Docs available [build log] Last success reported on 2018-11-29 [all 1 reports] |

## Modules

[Index] [Quick Jump]

## Downloads

- algebraic-graphs-0.3.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)