Cabal-Version:  3.0
name:           linear-smc
version:        2.0.1
category:       control
synopsis:       Build SMC morphisms using linear types
description:
  A number of domain specific languages, such as circuits or
  data-science workflows, are best expressed as diagrams of boxes
  connected by wires.
  A faithful abstraction of box-and-wires is Symmetric Monoidal Categories (SMCs)
  This library
  allows one to program SMCs with linear functions instead of SMC
  combinators. This is done without resorting to template haskell or compiler plugins.
  The rationale, design and implementation of this library is provided by the paper  "Evaluating Linear Functions to Symmetric Monoidal Categories", by Jean-Philippe Bernardy and Arnaud Spiwack, appearing at Haskell Symposium 2021.
license:        LGPL-3.0-or-later
license-file:   LICENSE
author:         Jean-Philippe Bernardy
maintainer:     jeanphilippe.bernardy@gmail.com
tested-with:    GHC==9.0.2
build-type:     Simple

library
  build-depends:       base >=4.13 && < 666
  build-depends: constraints >= 0.13.4 && < 666

  default-language: Haskell2010
  exposed-modules:
    Control.Category.Constrained
    Control.Category.Linear
  other-modules:
    Control.Category.FreeSMC
    Control.Category.FreeCartesian
    

Test-Suite test-unitary
  build-depends: constraints
  build-depends: array
  default-language: Haskell2010
  type:       exitcode-stdio-1.0
  main-is:    examples/Unitary.hs
  build-depends: base

