packages feed

category-extras-0.53.3: category-extras.cabal

name:          category-extras
category:      Control, Monads, Comonads
version:       0.53.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, and various recursion schemes 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

  other-modules:
    Control.Functor.Internal.Adjunction,
    Control.Functor.Internal.Ideal

  exposed-modules:
    Control.Category.Monoidal,
    Control.Category.Cartesian,
    Control.Category.Cartesian.Closed,
    Control.Applicative.Parameterized,
    Control.Allegory,
    Control.Arrow.BiKleisli,
    Control.Arrow.CoKleisli,
    Control.Category.Associative,
    Control.Category.Braided,
    Control.Category.Discrete,
    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.Density,
    Control.Comonad.Exponent,
    Control.Comonad.Fix,
    Control.Comonad.Indexed,
    Control.Comonad.HigherOrder,
    Control.Comonad.Parameterized,
    Control.Comonad.Pointer,
    Control.Comonad.Reader,
    Control.Comonad.Stream,
    Control.Comonad.Supply,
    Control.Comonad.Trans,
    Control.Dyad,
    Control.Functor,
    Control.Functor.Adjunction,
    Control.Functor.Adjunction.HigherOrder,
    Control.Functor.Algebra,
    Control.Functor.Algebra.Elgot,
    Control.Functor.Categorical,
    Control.Functor.Cone,
    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.KanExtension.Interpreter,
    Control.Functor.Lambek,
    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.Categorical,
    Control.Monad.Codensity,
    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.Ana,
    Control.Morphism.Apo,
    Control.Morphism.Build,
    Control.Morphism.Cata,
    Control.Morphism.Chrono,
    Control.Morphism.Destroy,
    Control.Morphism.Dyna,
    Control.Morphism.Exo,
    Control.Morphism.Futu,
    Control.Morphism.Histo,
    Control.Morphism.Hylo,
    Control.Morphism.Meta.Gibbons,
    Control.Morphism.Meta.Erwig,
    Control.Morphism.Para,
    Control.Morphism.Postpro,
    Control.Morphism.Prepro,
    Control.Morphism.Span,
    Control.Morphism.Synchro,
    Control.Morphism.Universal,
    Control.Morphism.Zygo,
    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