name: MHask
version: 0.3.0.0
synopsis: The category of monads
description:
MHask is the category where
.
* The objects are Haskell types of kind @(* → *)@ that have an instance of `Prelude.Monad'
.
* An arrow from object m to object n is a Haskell function of the form @(forall x. m x → n x)@
.
* Arrow composition is merely a specialization of Haskell function composition
.
* The identity arrow for the object m is the `Prelude.id' function in Haskell,
specialized to @(forall x. m x → m x)@
.
It is assumed that any instances of the classes provided here also have an instance
for Monad of the form @instance (Monad m) ⇒ Monad (t m)@, thus guaranteeing that @(t m)@
(or @(t i j m)@ for the indexed types) is always a Monad. If it were valid Haskell, I'd write:
.
> class (forall m. Monad m ⇒ Monad (t m)) ⇒ Functor t
.
'MHask.Functor.Functor' should actually be called Endofunctor, because if m is an object in MHask,
then an instance t of `Functor' can map object m to object (t m), and arrows from
m to n get mapped to arrows from (t m) to (t n).
homepage: https://github.com/DanBurton/MHask#readme
license: BSD3
license-file: LICENSE
author: Dan Burton
maintainer: danburton.email@gmail.com
category: Control
build-type: Simple
cabal-version: >=1.8
source-repository head
type: git
location: git://github.com/DanBurton/MHask.git
source-repository this
type: git
location: git://github.com/DanBurton/MHask.git
tag: MHask-0.3.0.0
library
exposed-modules: MHask, MHask.Comonad, MHask.Monad, MHask.Copointed, MHask.Pointed, MHask.Arrow, MHask.Functor, MHask.Indexed.Comonad, MHask.Indexed.Monad, MHask.Indexed.Copointed, MHask.Indexed.Pointed, MHask.Indexed.Functor
build-depends: base >= 2 && < 4.7, transformers >= 0.3
ghc-options: -Wall