File algebraic-graphs.cabal of Package ghc-algebraic-graphs
cabal-version: 2.2
name: algebraic-graphs
version: 0.6
x-revision: 1
synopsis: A library for algebraic graph construction and transformation
license: MIT
license-file: LICENSE
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
copyright: Andrey Mokhov, 2016-2021
homepage: https://github.com/snowleopard/alga
bug-reports: https://github.com/snowleopard/alga/issues
category: Algebra, Algorithms, Data Structures, Graphs
build-type: Simple
tested-with: GHC==9.0, GHC==8.10, GHC==8.8, GHC==8.6, GHC==8.4
description:
<https://github.com/snowleopard/alga Alga> is a library for algebraic construction and
manipulation of graphs in Haskell. See <https://github.com/snowleopard/alga-paper this paper>
for the motivation behind the library, the underlying theory and implementation details.
.
The top-level module
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph.html Algebra.Graph>
defines the main data type for /algebraic graphs/
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph.html#t:Graph Graph>,
as well as associated algorithms. For type-safe representation and
manipulation of /non-empty algebraic graphs/, see
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-NonEmpty.html Algebra.Graph.NonEmpty>.
Furthermore, /algebraic graphs with edge labels/ are implemented in
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-Labelled.html Algebra.Graph.Labelled>.
.
The library also provides conventional graph data structures, such as
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-AdjacencyMap.html Algebra.Graph.AdjacencyMap>
along with its various flavours:
.
* adjacency maps specialised to graphs with vertices of type 'Int'
(<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-AdjacencyIntMap.html Algebra.Graph.AdjacencyIntMap>),
* non-empty adjacency maps
(<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-NonEmpty-AdjacencyMap.html Algebra.Graph.NonEmpty.AdjacencyMap>),
* adjacency maps for undirected bipartite graphs
(<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-Bipartite-AdjacencyMap.html Algebra.Graph.Bipartite.AdjacencyMap>),
* adjacency maps with edge labels
(<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-Labelled-AdjacencyMap.html Algebra.Graph.Labelled.AdjacencyMap>),
* acyclic adjacency maps
(<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-Acyclic-AdjacencyMap.html Algebra.Graph.Acyclic.AdjacencyMap>),
.
A large part of the API of algebraic graphs and adjacency maps is available
through the 'Foldable'-like type class
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-ToGraph.html Algebra.Graph.ToGraph>.
.
The type classes defined in
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-Class.html Algebra.Graph.Class>
and
<http://hackage.haskell.org/package/algebraic-graphs/docs/Algebra-Graph-HigherKinded-Class.html Algebra.Graph.HigherKinded.Class>
can be used for polymorphic construction and manipulation of 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
<https://github.com/snowleopard/alga/issues discussions on the library API>.
extra-doc-files:
AUTHORS.md
CHANGES.md
README.md
source-repository head
type: git
location: https://github.com/snowleopard/alga.git
common common-settings
build-depends: array >= 0.4 && < 0.6,
base >= 4.11 && < 5,
containers >= 0.5.5.1 && < 0.8,
deepseq >= 1.3.0.1 && < 1.5,
mtl >= 2.1 && < 2.3,
transformers >= 0.4 && < 0.6
default-language: Haskell2010
default-extensions: ConstraintKinds
DeriveFunctor
DeriveGeneric
FlexibleContexts
FlexibleInstances
GADTs
GeneralizedNewtypeDeriving
MultiParamTypeClasses
RankNTypes
ScopedTypeVariables
TupleSections
TypeApplications
TypeFamilies
other-extensions: CPP
OverloadedStrings
RecordWildCards
ViewPatterns
ghc-options: -Wall
-Wcompat
-Wincomplete-record-updates
-Wincomplete-uni-patterns
-Wredundant-constraints
-fno-warn-name-shadowing
-fno-warn-unused-imports
-fspec-constr
library
import: common-settings
hs-source-dirs: src
exposed-modules: Algebra.Graph,
Algebra.Graph.Undirected,
Algebra.Graph.Acyclic.AdjacencyMap,
Algebra.Graph.AdjacencyIntMap,
Algebra.Graph.AdjacencyIntMap.Algorithm,
Algebra.Graph.AdjacencyMap,
Algebra.Graph.AdjacencyMap.Algorithm,
Algebra.Graph.Bipartite.AdjacencyMap,
Algebra.Graph.Bipartite.AdjacencyMap.Algorithm,
Algebra.Graph.Class,
Algebra.Graph.Export,
Algebra.Graph.Export.Dot,
Algebra.Graph.HigherKinded.Class,
Algebra.Graph.Internal,
Algebra.Graph.Label,
Algebra.Graph.Labelled,
Algebra.Graph.Labelled.AdjacencyMap,
Algebra.Graph.Labelled.Example.Automaton,
Algebra.Graph.Labelled.Example.Network,
Algebra.Graph.NonEmpty,
Algebra.Graph.NonEmpty.AdjacencyMap,
Algebra.Graph.Relation,
Algebra.Graph.Relation.Preorder,
Algebra.Graph.Relation.Reflexive,
Algebra.Graph.Relation.Symmetric,
Algebra.Graph.Relation.Transitive,
Algebra.Graph.ToGraph,
Data.Graph.Typed
test-suite test-alga
import: common-settings
hs-source-dirs: test
type: exitcode-stdio-1.0
main-is: Main.hs
other-modules: Algebra.Graph.Test,
Algebra.Graph.Test.API,
Algebra.Graph.Test.Acyclic.AdjacencyMap,
Algebra.Graph.Test.AdjacencyIntMap,
Algebra.Graph.Test.AdjacencyMap,
Algebra.Graph.Test.Arbitrary,
Algebra.Graph.Test.Bipartite.AdjacencyMap,
Algebra.Graph.Test.Export,
Algebra.Graph.Test.Generic,
Algebra.Graph.Test.Graph,
Algebra.Graph.Test.Undirected,
Algebra.Graph.Test.Internal,
Algebra.Graph.Test.Label,
Algebra.Graph.Test.Labelled.AdjacencyMap,
Algebra.Graph.Test.Labelled.Graph,
Algebra.Graph.Test.NonEmpty.AdjacencyMap,
Algebra.Graph.Test.NonEmpty.Graph,
Algebra.Graph.Test.Relation,
Algebra.Graph.Test.Relation.SymmetricRelation,
Algebra.Graph.Test.RewriteRules,
Data.Graph.Test.Typed
build-depends: algebraic-graphs,
extra >= 1.4 && < 2,
inspection-testing >= 0.4.2.2 && < 0.5,
QuickCheck >= 2.14 && < 2.15
other-extensions: ConstrainedClassMethods
TemplateHaskell