packages feed

algebraic-edge-graphs-0.1.0: algebraic-edge-graphs.cabal

cabal-version: 2.4
name:          algebraic-edge-graphs
version:       0.1.0
synopsis:      A library for algebraic edge-graph construction and transformation
license:       MIT
license-file:  LICENSE
author:        Jack Liell-Cock <jackliellcock@gmail.com>
maintainer:    Jack Liell-Cock <jackliellcock@gmail.com>
copyright:     Jack Liell-Cock, 2025-2026
homepage:      https://github.com/jacklc3/algebraic-edge-graphs
bug-reports:   https://github.com/jacklc3/algebraic-edge-graphs/issues
category:      Algebra, Algorithms, Data Structures, Graphs
build-type:    Simple
tested-with:   GHC ==9.6.6
             , GHC ==9.8.4
             , GHC ==9.10.1
             , GHC ==9.12.1
description:
  A library for algebraic construction and manipulation of edge-indexed graphs
  in Haskell. Based on the theory of algebraic edge graphs.
  .
  The top-level module "EdgeGraph" defines the core data type
  'EdgeGraph.EdgeGraph' which is a deep embedding of six graph construction
  primitives 'EdgeGraph.empty', 'EdgeGraph.edge', 'EdgeGraph.overlay',
  'EdgeGraph.into', 'EdgeGraph.pits' and 'EdgeGraph.tips'. More
  conventional graph representations can be found in "EdgeGraph.AdjacencyMap" and
  "EdgeGraph.Incidence".
  .
  The type classes defined in "EdgeGraph.Class" and "EdgeGraph.HigherKinded.Class"
  can be used for polymorphic graph construction and manipulation. Also see
  "EdgeGraph.Fold" that defines the Boehm-Berarducci encoding of algebraic edge
  graphs and provides additional flexibility for polymorphic graph manipulation.
  .
  This is an experimental library and the API will be unstable until version 1.0.0.

extra-doc-files:
  CHANGELOG.md
  README.md

source-repository head
  type:     git
  location: https://github.com/jacklc3/algebraic-edge-graphs.git

library
  hs-source-dirs:     src
  exposed-modules:    EdgeGraph,
                      EdgeGraph.AdjacencyMap,
                      EdgeGraph.AdjacencyMap.Internal,
                      EdgeGraph.Class,
                      EdgeGraph.Fold,
                      EdgeGraph.HigherKinded.Class,
                      EdgeGraph.IntAdjacencyMap,
                      EdgeGraph.IntAdjacencyMap.Internal,
                      EdgeGraph.Incidence,
                      EdgeGraph.Incidence.Internal
  build-depends:      array      >= 0.5 && < 0.8,
                      base       >= 4.9 && < 5,
                      containers >= 0.5 && < 0.8
  default-language:   Haskell2010
  default-extensions: FlexibleContexts
                      GeneralizedNewtypeDeriving
                      ScopedTypeVariables
                      TupleSections
                      TypeFamilies
  other-extensions:   DeriveFoldable
                      DeriveFunctor
                      DeriveTraversable
                      OverloadedStrings
  GHC-options:        -Wall -fwarn-tabs

test-suite test
  hs-source-dirs:     test
  type:               exitcode-stdio-1.0
  main-is:            Main.hs
  other-modules:      Arbitrary,
                      Testable.Graph,
                      Testable.AlgebraicGraph,
                      Testable.AdjacencyGraph,
                      Testable.Instances,
                      Test.AdjacencyMap,
                      Test.Fold,
                      Test.EdgeGraph,
                      Test.IntAdjacencyMap,
                      Test.Incidence
  build-depends:      algebraic-edge-graphs,
                      base       >= 4.9  && < 5,
                      containers >= 0.5  && < 0.8,
                      extra      >= 1.5  && < 2,
                      QuickCheck >= 2.9  && < 3
  default-language:   Haskell2010
  GHC-options:        -Wall -fwarn-tabs
  default-extensions: FlexibleContexts
                      GeneralizedNewtypeDeriving
                      TypeFamilies
                      ScopedTypeVariables
  other-extensions:   RankNTypes
                      ViewPatterns

benchmark bench
  hs-source-dirs:     bench
  type:               exitcode-stdio-1.0
  main-is:            Bench.hs
  build-depends:      algebraic-edge-graphs,
                      base       >= 4.9  && < 5,
                      containers >= 0.5  && < 0.8,
                      criterion  >= 1.1  && < 2
  default-language:   Haskell2010
  GHC-options:        -O2 -Wall -fwarn-tabs
  default-extensions: FlexibleContexts
                      TypeFamilies
                      ScopedTypeVariables