# MHask: The category of monads

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).

Versions [faq] | 0.1.0.0, 0.2.0.0, 0.3.0.0 |
---|---|

Dependencies | base (>=2 && <4.7), transformers (>=0.3) [details] |

License | BSD-3-Clause |

Author | Dan Burton |

Maintainer | danburton.email@gmail.com |

Category | Control |

Home page | https://github.com/DanBurton/MHask#readme |

Source repo | head: git clone git://github.com/DanBurton/MHask.git this: git clone git://github.com/DanBurton/MHask.git(tag MHask-0.3.0.0) |

Uploaded | by DanBurton at Tue Aug 6 09:02:47 UTC 2013 |

Distributions | NixOS:0.3.0.0 |

Downloads | 1719 total (27 in the last 30 days) |

Rating | (no votes yet) [estimated by rule of succession] |

Your Rating | |

Status | Docs uploaded by user Build status unknown [no reports yet] |

## Modules

[Index]

## Downloads

- MHask-0.3.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)