220 lines
7.2 KiB
Plaintext
220 lines
7.2 KiB
Plaintext
name: semigroupoids
|
|
category: Control, Comonads
|
|
version: 5.3.4
|
|
x-revision: 1
|
|
license: BSD3
|
|
cabal-version: >= 1.8
|
|
license-file: LICENSE
|
|
author: Edward A. Kmett
|
|
maintainer: Edward A. Kmett <ekmett@gmail.com>
|
|
stability: provisional
|
|
homepage: http://github.com/ekmett/semigroupoids
|
|
bug-reports: http://github.com/ekmett/semigroupoids/issues
|
|
copyright: Copyright (C) 2011-2015 Edward A. Kmett
|
|
tested-with: GHC == 7.0.4
|
|
, GHC == 7.2.2
|
|
, GHC == 7.4.2
|
|
, GHC == 7.6.3
|
|
, GHC == 7.8.4
|
|
, GHC == 7.10.3
|
|
, GHC == 8.0.2
|
|
, GHC == 8.2.2
|
|
, GHC == 8.4.4
|
|
, GHC == 8.6.5
|
|
, GHC == 8.8.1
|
|
build-type: Custom
|
|
synopsis: Semigroupoids: Category sans id
|
|
extra-source-files:
|
|
.travis.yml
|
|
.gitignore
|
|
.vim.custom
|
|
README.markdown
|
|
CHANGELOG.markdown
|
|
Warning.hs
|
|
description:
|
|
Provides a wide array of (semi)groupoids and operations for working with them.
|
|
.
|
|
A 'Semigroupoid' is a 'Category' without the requirement of identity arrows for every object in the category.
|
|
.
|
|
A 'Category' is any 'Semigroupoid' for which the Yoneda lemma holds.
|
|
.
|
|
When working with comonads you often have the @\<*\>@ portion of an @Applicative@, but
|
|
not the @pure@. This was captured in Uustalu and Vene's \"Essence of Dataflow Programming\"
|
|
in the form of the @ComonadZip@ class in the days before @Applicative@. Apply provides a weaker invariant, but for the comonads used for data flow programming (found in the streams package), this invariant is preserved. Applicative function composition forms a semigroupoid.
|
|
.
|
|
Similarly many structures are nearly a comonad, but not quite, for instance lists provide a reasonable 'extend' operation in the form of 'tails', but do not always contain a value.
|
|
.
|
|
Ideally the following relationships would hold:
|
|
.
|
|
> Foldable ----> Traversable <--- Functor ------> Alt ---------> Plus Semigroupoid
|
|
> | | | | |
|
|
> v v v v v
|
|
> Foldable1 ---> Traversable1 Apply --------> Applicative -> Alternative Category
|
|
> | | | |
|
|
> v v v v
|
|
> Bind ---------> Monad -------> MonadPlus Arrow
|
|
>
|
|
.
|
|
Apply, Bind, and Extend (not shown) give rise the Static, Kleisli and Cokleisli semigroupoids respectively.
|
|
.
|
|
This lets us remove many of the restrictions from various monad transformers
|
|
as in many cases the binding operation or @\<*\>@ operation does not require them.
|
|
.
|
|
Finally, to work with these weaker structures it is beneficial to have containers
|
|
that can provide stronger guarantees about their contents, so versions of 'Traversable'
|
|
and 'Foldable' that can be folded with just a 'Semigroup' are added.
|
|
|
|
source-repository head
|
|
type: git
|
|
location: git://github.com/ekmett/semigroupoids.git
|
|
|
|
custom-setup
|
|
setup-depends:
|
|
base >= 4 && < 5,
|
|
Cabal,
|
|
cabal-doctest >= 1 && < 1.1
|
|
|
|
flag containers
|
|
description:
|
|
You can disable the use of the `containers` package using `-f-containers`.
|
|
.
|
|
Disabing this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
default: True
|
|
manual: True
|
|
|
|
flag contravariant
|
|
description:
|
|
You can disable the use of the `contravariant` package using `-f-contravariant`.
|
|
.
|
|
Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
.
|
|
If disabled we will not supply instances of `Contravariant`
|
|
.
|
|
default: True
|
|
manual: True
|
|
|
|
flag distributive
|
|
description:
|
|
You can disable the use of the `distributive` package using `-f-distributive`.
|
|
.
|
|
Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
.
|
|
If disabled we will not supply instances of `Distributive`
|
|
.
|
|
default: True
|
|
manual: True
|
|
|
|
flag doctests
|
|
description:
|
|
You can disable testing with doctests using `-f-doctests`.
|
|
default: True
|
|
manual: True
|
|
|
|
flag comonad
|
|
description:
|
|
You can disable the use of the `comonad` package using `-f-comonad`.
|
|
.
|
|
Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
.
|
|
If disabled we will not supply instances of `Comonad`
|
|
.
|
|
default: True
|
|
manual: True
|
|
|
|
flag tagged
|
|
description:
|
|
You can disable the use of the `tagged` package using `-f-tagged`.
|
|
.
|
|
Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
default: True
|
|
manual: True
|
|
|
|
flag unordered-containers
|
|
description:
|
|
You can disable the use of the `unordered-containers` package (and also its dependency `hashable`) using `-f-unordered-containers`.
|
|
.
|
|
Disabling this is an unsupported configuration, but it may be useful for accelerating builds in sandboxes for expert users.
|
|
default: True
|
|
manual: True
|
|
|
|
library
|
|
build-depends:
|
|
base >= 4.3 && < 5,
|
|
base-orphans >= 0.8 && < 1,
|
|
bifunctors >= 5 && < 6,
|
|
template-haskell,
|
|
transformers >= 0.2 && < 0.6,
|
|
transformers-compat >= 0.5 && < 0.7
|
|
|
|
if impl(ghc >= 7.0 && < 7.2)
|
|
build-depends: generic-deriving >= 1.11 && < 1.14
|
|
|
|
if impl(ghc >= 7.2 && < 7.6)
|
|
build-depends: ghc-prim
|
|
|
|
if !impl(ghc >= 8.0)
|
|
build-depends: semigroups >= 0.16.2 && < 1
|
|
|
|
if flag(containers)
|
|
build-depends: containers >= 0.3 && < 0.7
|
|
|
|
if flag(contravariant)
|
|
build-depends: contravariant >= 0.2.0.1 && < 2
|
|
|
|
if flag(distributive)
|
|
build-depends: distributive >= 0.2.2 && < 1
|
|
|
|
if flag(comonad)
|
|
build-depends: comonad >= 4.2.6 && < 6
|
|
|
|
if flag(tagged)
|
|
build-depends: tagged >= 0.8.5 && < 1
|
|
|
|
if flag(unordered-containers)
|
|
build-depends: hashable >= 1.1 && < 1.4,
|
|
unordered-containers >= 0.2 && < 0.3
|
|
|
|
hs-source-dirs: src
|
|
|
|
exposed-modules:
|
|
Data.Bifunctor.Apply
|
|
Data.Functor.Alt
|
|
Data.Functor.Apply
|
|
Data.Functor.Bind
|
|
Data.Functor.Bind.Class
|
|
Data.Functor.Bind.Trans
|
|
Data.Functor.Extend
|
|
Data.Functor.Plus
|
|
Data.Groupoid
|
|
Data.Isomorphism
|
|
Data.Semigroup.Bifoldable
|
|
Data.Semigroup.Bitraversable
|
|
Data.Semigroup.Foldable
|
|
Data.Semigroup.Foldable.Class
|
|
Data.Semigroup.Traversable
|
|
Data.Semigroup.Traversable.Class
|
|
Data.Semigroupoid
|
|
Data.Semigroupoid.Dual
|
|
Data.Semigroupoid.Ob
|
|
Data.Semigroupoid.Static
|
|
Data.Traversable.Instances
|
|
|
|
ghc-options: -Wall -fno-warn-warnings-deprecations
|
|
|
|
if impl(ghc >= 7.10)
|
|
ghc-options: -fno-warn-trustworthy-safe
|
|
|
|
test-suite doctests
|
|
type: exitcode-stdio-1.0
|
|
main-is: doctests.hs
|
|
hs-source-dirs: test
|
|
ghc-options: -Wall -fno-warn-warnings-deprecations
|
|
|
|
if !flag(doctests)
|
|
buildable: False
|
|
else
|
|
build-depends:
|
|
base >= 4 && < 5,
|
|
doctest >= 0.11.1 && < 0.18,
|
|
semigroupoids
|