packages feed

category-extras-0.50.3: category-extras.cabal

name:                   category-extras
category:               Control, Monads, Comonads
version:                0.50.3
license:                BSD3
cabal-version:          >= 1.2
license-file:           LICENSE
author:                 Edward A. Kmett, Dave Menendez
maintainer:             Edward A. Kmett <ekmett@gmail.com>
stability:              experimental
homepage:               http://comonad.com/reader/
synopsis:               Various modules and constructs inspired by category theory
copyright:              Copyright (C) 2008 Edward A. Kmett
                        Copyright (C) 2004--2008 Dave Menendez
                        Copyright (C) 2007 Iavor Diatchki
description:            A vastly expanded collection of modules implementing various
                        ideas from category theory. Notable bits include: comonads,
                        adjunctions, functor fixedpoints and various recursion
                        operaters ala /Functional Programming with Bananas, Lenses,
                        Envelopes and Barbed Wire/.
build-type:             Simple

flag ArrowSubclassesCategory {
        description:    Indicates Control.Category is available and that the standard library has
                        its arrows subclass Control.Category.Category
        default:        True
}

flag TypeFamilies {
       description:    Support for Type Families is available to us
}

flag Optimize { 
        description:    Enable optimizations
        default:        False
}

library { 
        build-depends:  base > 3, mtl, array
        extensions:
                CPP,
                EmptyDataDecls,
                FlexibleContexts,
                FlexibleInstances,
                FunctionalDependencies,
                MultiParamTypeClasses,
                TypeOperators,
                TypeSynonymInstances
                UndecidableInstances,
                ExistentialQuantification,
                Rank2Types

        exposed-modules:
                Control.Category.Monoidal,
                Control.Category.Cartesian,
                Control.Category.Cartesian.Closed,
                Control.Applicative.Parameterized,
                Control.Arrow.BiKleisli,
                Control.Arrow.CoKleisli,
                Control.Category.Associative,
                Control.Category.Braided,
                Control.Category.Distributive,
                Control.Category.Dual,
                Control.Category.Hask,
                Control.Category.Object,
                Control.Comonad,
                Control.Comonad.Cofree,
                Control.Comonad.Context,
                Control.Comonad.Coideal,
                Control.Comonad.Fix,
                Control.Comonad.Indexed,
                Control.Comonad.HigherOrder,
                Control.Comonad.Parameterized,
                Control.Comonad.Pointer,
                Control.Comonad.Reader,
                Control.Comonad.Supply
                Control.Functor.Adjunction,
                Control.Functor.Adjunction.HigherOrder,
                Control.Functor.Algebra,
                Control.Functor.Algebra.Elgot,
                Control.Functor.Composition,
                Control.Functor.Combinators.Const,
                Control.Functor.Combinators.Lift,
                Control.Functor.Combinators.Join,
                Control.Functor.Combinators.Biff,
                Control.Functor.Combinators.Flip,
                Control.Functor.Combinators.Of,
                Control.Functor.Contra,
                Control.Functor.Extras,
                Control.Functor.Exponential,
                Control.Functor.Fix,
                Control.Functor.Full,
                Control.Functor.HigherOrder,
                Control.Functor.HigherOrder.Composition,
                Control.Functor.Indexed,
                Control.Functor.KanExtension,
                Control.Functor.Limit,
                Control.Functor.Pointed,
                Control.Functor.Pointed.Composition,
                Control.Functor.Representable,
                Control.Functor.Strong,
                Control.Functor.Zip,
                Control.Functor.Zap,
                Control.Monad.Free,
                Control.Monad.HigherOrder,
                Control.Monad.Indexed,
                Control.Monad.Indexed.Cont,
                Control.Monad.Indexed.Fix,
                Control.Monad.Indexed.State,
                Control.Monad.Indexed.Trans,
                Control.Monad.Parameterized,
                Control.Monad.Hyper,
                Control.Monad.Either,
                Control.Morphism.Hylo,
                Control.Morphism.Cata,
                Control.Morphism.Ana,
                Control.Morphism.Meta,
                Control.Morphism.Futu,
                Control.Morphism.Chrono,
                Control.Morphism.Para,
                Control.Morphism.Dyna,
                Control.Morphism.Apo,
                Control.Morphism.Zygo,
                Control.Morphism.Histo,
                Data.Void

        hs-source-dirs:         src
        ghc-options:            -Wall 

        if flag(ArrowSubclassesCategory) {
                build-depends: ghc >= 6.9
                cpp-options: -D__ARROW_SUBCLASSES_CATEGORY__=1
        } else { 
                build-depends: ghc < 6.9
        }

        if flag(TypeFamilies) {
                extensions: TypeFamilies
                cpp-options: -D__TYPE_FAMILIES__=1
        }

        if flag(Optimize) {
                ghc-options: -funbox-strict-fields -O2
        }
}