name:          free
category:      Control, Monads
version:       5.2
x-revision: 1
license:       BSD3
cabal-version: 1.18
license-file:  LICENSE
author:        Edward A. Kmett
maintainer:    Edward A. Kmett <[email protected]>
stability:     provisional
homepage:      http://github.com/ekmett/free/
bug-reports:   http://github.com/ekmett/free/issues
copyright:     Copyright (C) 2008-2015 Edward A. Kmett
tested-with:   GHC == 8.0.2
            , GHC == 8.2.2
            , GHC == 8.4.4
            , GHC == 8.6.5
            , GHC == 8.8.4
            , GHC == 8.10.7
            , GHC == 9.0.2
            , GHC == 9.2.6
            , GHC == 9.4.4
            , GHC == 9.6.1
synopsis:      Monads for free
description:
 Free monads are useful for many tree-like structures and domain specific languages.
 .
 If @f@ is a 'Functor' then the free 'Monad' on @f@ is the type
 of trees whose nodes are labeled with the constructors of @f@. The word
 \"free\" is used in the sense of \"unrestricted\" rather than \"zero-cost\":
 @Free f@ makes no constraining assumptions beyond those given by @f@ and the
 definition of 'Monad'. As used here it is a standard term from the
 mathematical theory of adjoint functors.
 .
 Cofree comonads are dual to free monads. They provide convenient ways to talk
 about branching streams and rose-trees, and can be used to annotate syntax
 trees. The cofree comonad can be seen as a stream parameterized by a 'Functor'
 that controls its branching factor.
 .
 More information on free monads, including examples, can be found in the
 following blog posts:
 <https://ekmett.github.io/reader/2008/monads-for-free/>
 <https://ekmett.github.io/reader/2011/free-monads-for-less/>

build-type:    Simple
extra-source-files:
 .gitignore
 .hlint.yaml
 .vim.custom
 README.markdown
 CHANGELOG.markdown
 doc/proof/Control/Comonad/Cofree/*.md
 doc/proof/Control/Comonad/Trans/Cofree/*.md
 examples/free-examples.cabal
 examples/LICENSE
 examples/*.hs
 examples/*.lhs
extra-doc-files:
 examples/*.hs
 examples/*.lhs

source-repository head
 type: git
 location: git://github.com/ekmett/free.git

library
 hs-source-dirs: src

 default-language:   Haskell2010
 other-extensions:
   MultiParamTypeClasses
   FunctionalDependencies
   FlexibleInstances
   UndecidableInstances
   Rank2Types
   GADTs

 build-depends:
   base                 >= 4.9     && < 5,
   comonad              >= 5.0.8   && < 6,
   containers           >= 0.5.7.1 && < 0.7,
   distributive         >= 0.5.2   && < 1,
   exceptions           >= 0.10.4  && < 0.11,
   indexed-traversable  >= 0.1.1   && < 0.2,
   mtl                  >= 2.2.2   && < 2.4,
   profunctors          >= 5.6.1   && < 6,
   semigroupoids        >= 5.3.5   && < 7,
   th-abstraction       >= 0.4.2.0 && < 0.6,
   transformers         >= 0.5     && < 0.7,
   transformers-base    >= 0.4.5.2 && < 0.5,
   template-haskell     >= 2.11    && < 2.21

 if !impl(ghc >= 8.2)
   build-depends: bifunctor-classes-compat >= 0.1 && < 0.2

 exposed-modules:
   Control.Applicative.Free
   Control.Applicative.Free.Fast
   Control.Applicative.Free.Final
   Control.Applicative.Trans.Free
   Control.Alternative.Free
   Control.Alternative.Free.Final
   Control.Comonad.Cofree
   Control.Comonad.Cofree.Class
   Control.Comonad.Trans.Cofree
   Control.Comonad.Trans.Coiter
   Control.Monad.Free
   Control.Monad.Free.Ap
   Control.Monad.Free.Church
   Control.Monad.Free.Class
   Control.Monad.Free.TH
   Control.Monad.Trans.Free
   Control.Monad.Trans.Free.Ap
   Control.Monad.Trans.Free.Church
   Control.Monad.Trans.Iter

 ghc-options: -Wall -Wcompat -Wnoncanonical-monad-instances

 if !impl(ghc >= 8.8)
   ghc-options: -Wnoncanonical-monadfail-instances

 if impl(ghc >= 9.0)
   -- these flags may abort compilation with GHC-8.10
   -- https://gitlab.haskell.org/ghc/ghc/-/merge_requests/3295
   ghc-options: -Winferred-safe-imports -Wmissing-safe-haskell-mode

 x-docspec-extra-packages: tagged