packages feed

category-extras-0.51.3: category-extras.cabal

name:                   category-extras
category:               Control, Monads, Comonads
version:                0.51.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:  mtl >= 1.1
        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,
                Control.Functor.Adjunction,
                Control.Functor.Adjunction.HigherOrder,
                Control.Functor.Algebra,
                Control.Functor.Algebra.Elgot,
                Control.Functor.Categorical,
                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.Yoneda,
                Control.Functor.Zip,
                Control.Functor.Zap,
                Control.Monad.Free,
                Control.Monad.HigherOrder,
                Control.Monad.Ideal,
                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.Universal,
                Control.Morphism.Zygo,
                Control.Morphism.Histo,
                Data.Void

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

        if flag(ArrowSubclassesCategory)
                build-depends: ghc >= 6.9, base > 3, array
                cpp-options: -D__ARROW_SUBCLASSES_CATEGORY__=1
        else
                build-depends: ghc < 6.9, base, array 
                hs-source-dirs: pre-6.9
                exposed-modules: Control.Category

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

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