name: free category: Control, Monads version: 5.2 x-revision: 5 license: BSD3 cabal-version: 1.18 license-file: LICENSE author: Edward A. Kmett maintainer: Edward A. Kmett 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: 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.8, 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.8, transformers >= 0.5 && < 0.7, transformers-base >= 0.4.5.2 && < 0.5, template-haskell >= 2.11 && < 2.23 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