packages feed

proarrow-0.1.0.0: proarrow.cabal

cabal-version:      3.0
name:               proarrow
version:            0.1.0.0
synopsis:           Category theory with a central role for profunctors
description:
    A library for doing category theory in Haskell with profunctors, rather
    than functors, as the central abstraction. Every Haskell kind carries at
    most one category structure (chosen via @CategoryOf@), newtype wrappers on
    kinds give variant categories, and functors are encoded as representable
    profunctors. On top of this the library provides monoidal structure,
    (co)limits, adjunctions, Kan extensions, promonads, and a full
    profunctor-optics hierarchy.
    .
    Import "Proarrow" to get started; "Proarrow.Core" explains the design of the
    core abstractions in depth. The public sublibrary @proarrow:testing@ provides
    generic law-checking properties for testing your own categories. 
homepage:           https://github.com/sjoerdvisscher/proarrow
bug-reports:        https://github.com/sjoerdvisscher/proarrow/issues
license:            BSD-3-Clause
license-file:       LICENSE
author:             Sjoerd Visscher
maintainer:         sjoerd@w3future.com
category:           Math, Categories
tested-with:        GHC ==9.10.3 || ==9.12.2

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

extra-source-files:
    fix-github-links.py
    lattice.dot
    mkdocs.sh

common extensions
    default-language: GHC2024
    ghc-options:      -Wall
    default-extensions:
        BlockArguments
        DefaultSignatures
        DeriveAnyClass
        DerivingVia
        FunctionalDependencies
        OverloadedLists
        NoImplicitPrelude
        NoStarIsType
        PatternSynonyms
        RecordWildCards
        QuantifiedConstraints
        StrictData
        TypeAbstractions
        TypeData
        TypeFamilies
        UndecidableInstances
        UndecidableSuperClasses
        ViewPatterns

library
    import: extensions
    exposed-modules:
        Proarrow
        Proarrow.Adjunction
        Proarrow.Category.Enriched
        Proarrow.Category.Enriched.Dagger
        Proarrow.Category.Enriched.Finitary
        Proarrow.Category.Enriched.Finitary.Sheaf
        Proarrow.Category.Enriched.Finitary.Topos
        Proarrow.Category.Enriched.Quantale
        Proarrow.Category.Enriched.Thin
        Proarrow.Category.Enriched.Thin.Composition
        Proarrow.Category.Instance.Bool
        Proarrow.Category.Instance.Collage
        Proarrow.Category.Instance.Constraint
        Proarrow.Category.Instance.Coproduct
        Proarrow.Category.Instance.Cospan
        Proarrow.Category.Instance.Cost
        Proarrow.Category.Instance.Discrete
        Proarrow.Category.Instance.Duploid
        Proarrow.Category.Instance.Fam
        Proarrow.Category.Instance.FinHask
        Proarrow.Category.Instance.FinRel
        Proarrow.Category.Instance.FinSet
        Proarrow.Category.Instance.Free
        Proarrow.Category.Instance.Graph
        Proarrow.Category.Instance.Hask
        Proarrow.Category.Instance.IntConstruction
        Proarrow.Category.Instance.Kleisli
        Proarrow.Category.Instance.Linear
        Proarrow.Category.Instance.Mat
        Proarrow.Category.Instance.Monoid
        Proarrow.Category.Instance.Nat
        Proarrow.Category.Instance.PointedHask
        Proarrow.Category.Instance.Product
        Proarrow.Category.Instance.Prof
        Proarrow.Category.Instance.Rel
        Proarrow.Category.Instance.Rep
        Proarrow.Category.Instance.Simplex
        Proarrow.Category.Instance.Span
        Proarrow.Category.Instance.Sub
        Proarrow.Category.Instance.Unit
        Proarrow.Category.Instance.Zero
        Proarrow.Category.Instance.ZX
        Proarrow.Category.Internal
        Proarrow.Category.Monoidal
        Proarrow.Category.Monoidal.Action
        Proarrow.Category.Monoidal.Applicative
        Proarrow.Category.Monoidal.Cartesian
        Proarrow.Category.Monoidal.Closed
        Proarrow.Category.Monoidal.Coclosed
        Proarrow.Category.Monoidal.CompactClosed
        Proarrow.Category.Monoidal.CopyDiscard
        Proarrow.Category.Monoidal.Distributive
        Proarrow.Category.Monoidal.EndoProf
        Proarrow.Category.Monoidal.Hypergraph
        Proarrow.Category.Monoidal.Rev
        Proarrow.Category.Monoidal.StarAutonomous
        Proarrow.Category.Monoidal.Strength
        Proarrow.Category.Monoidal.Strictified
        Proarrow.Category.Instance.Paths
        Proarrow.Category.Instance.Opposite
        Proarrow.Category.Instance.Ordinal
        Proarrow.Category.Promonoidal
        Proarrow.Category.Sheaf
        Proarrow.Category.Topos
        Proarrow.Colimit
        Proarrow.Colimit.BinaryCoproduct
        Proarrow.Colimit.Coequalizer
        Proarrow.Colimit.Copower
        Proarrow.Colimit.Initial
        Proarrow.Colimit.NaturalNumbers
        Proarrow.Colimit.Pushout
        Proarrow.Core
        Proarrow.Functor
        Proarrow.Limit
        Proarrow.Limit.BinaryProduct
        Proarrow.Limit.Equalizer
        Proarrow.Limit.Power
        Proarrow.Limit.Pullback
        Proarrow.Limit.Terminal
        Proarrow.Monoid
        Proarrow.Object
        Proarrow.Optic
        Proarrow.Optics
        Proarrow.Optic.Action
        Proarrow.Optic.AffineFold
        Proarrow.Optic.AffineTraversal
        Proarrow.Optic.Day
        Proarrow.Optic.Fold
        Proarrow.Optic.Getter
        Proarrow.Optic.Glass
        Proarrow.Optic.Grate
        Proarrow.Optic.Iso
        Proarrow.Optic.Kaleidoscope
        Proarrow.Optic.PowerGrate
        Proarrow.Optic.Lens
        Proarrow.Optic.Prism
        Proarrow.Optic.Prod
        Proarrow.Optic.Setter
        Proarrow.Optic.Sum
        Proarrow.Optic.Tracer
        Proarrow.Optic.MonoidalLens
        Proarrow.Optic.MonoidalTraversal
        Proarrow.Optic.Traversal
        Proarrow.Path
        Proarrow.Profunctor.Cofree
        Proarrow.Profunctor.Corepresentable
        Proarrow.Profunctor.Free
        Proarrow.Profunctor.Instance.Adj
        Proarrow.Profunctor.Instance.Arrow
        Proarrow.Profunctor.Instance.Cocone
        Proarrow.Profunctor.Instance.Composition
        Proarrow.Profunctor.Instance.Cone
        Proarrow.Profunctor.Instance.Constant
        Proarrow.Profunctor.Instance.Coproduct
        Proarrow.Profunctor.Instance.Costar
        Proarrow.Profunctor.Instance.Coyoneda
        Proarrow.Profunctor.Instance.Day
        Proarrow.Profunctor.Instance.Direp
        Proarrow.Profunctor.Instance.Edges
        Proarrow.Profunctor.Instance.Exponential
        Proarrow.Profunctor.Instance.Fix
        Proarrow.Profunctor.Instance.Fold
        Proarrow.Profunctor.Instance.HaskValue
        Proarrow.Profunctor.Instance.Identity
        Proarrow.Profunctor.Instance.Initial
        Proarrow.Profunctor.Instance.List
        Proarrow.Profunctor.Instance.PastroTambara
        Proarrow.Profunctor.Instance.Product
        Proarrow.Profunctor.Instance.Ran
        Proarrow.Profunctor.Instance.Rift
        Proarrow.Profunctor.Instance.Sieve
        Proarrow.Profunctor.Instance.Star
        Proarrow.Profunctor.Instance.Terminal
        Proarrow.Profunctor.Instance.Wrapped
        Proarrow.Profunctor.Instance.Yoneda
        Proarrow.Profunctor.Representable
        Proarrow.Promonad
        Proarrow.Promonad.Cont
        Proarrow.Promonad.Reader
        Proarrow.Promonad.State
        Proarrow.Promonad.Writer
        Proarrow.Squares
        Proarrow.Tools.CCC
        Proarrow.Tools.DPO
        Proarrow.Tools.Laws
        Proarrow.Tools.Diagrams.Dot
        Proarrow.Tools.Diagrams.Svg
        Proarrow.Universal

    build-depends:
        , base >=4.20 && <5
        , containers >=0.6 && <0.9
        , fin >= 0.3.2 && <1
        , vec >= 0.5.1 && <1
        , universe-base >= 1.1.4 && <1.2
    hs-source-dirs:   src

library testing
    import: extensions
    visibility: public
    hs-source-dirs: testing
    exposed-modules:
        Proarrow.Testing
        Proarrow.Testing.Laws
        Proarrow.Testing.Laws.Run
    build-depends: proarrow
    build-depends:
        , base >=4.20 && <5
        , data-default >=0.7 && <0.9
        , falsify >=0.4 && <0.5
        , tasty >=1.4 && <1.6
        , tasty-falsify >=0.1 && <0.2

test-suite test
    import: extensions
    type: exitcode-stdio-1.0
    hs-source-dirs:   test
    main-is:          Main.hs
    other-modules:
        Examples.Cofree
        Examples.CustomLaws
        Examples.Database
        Examples.Free
        Examples.FrontDoor
        Examples.Readme
        Examples.Graph
        Examples.UntypedLambdaCalculus
        Examples.SimplyTypedLambdaCalculus
        Examples.Vitrea
        Props.Bool
        Props.DPO
        Props.Discrete
        Props.Cospan
        Props.Cost
        Props.Dot
        Props.Svg
        Props.FinHask
        Props.FinRel
        Props.FinSet
        Props.Finitary
        Props.Finitary.Graph
        Props.Free
        Props.Hask
        Props.Kleisli
        Props.PointedHask
        Props.Mat
        Props.Optic.Hask
        Props.Optic.Linear
        Props.Ordinal
        Props.Paths
        Props.Sheaf
        Props.Sheaf.Chain
        Props.Sheaf.Collage
        Props.Optic.FinRel
        Props.Simplex
        Props.Span
        Props.ZX
    build-depends: proarrow, proarrow:testing
    build-depends:
        , base >=4.20 && <5
        , containers >=0.6 && <0.9
        , falsify >=0.4 && <0.5
        , fin >= 0.3.2 && <1
        , vec >= 0.5.1 && <1
        , universe-base >= 1.1.4 && <1.2
        , tasty >=1.4 && <1.6
        , tasty-falsify >=0.1 && <0.2