The rmonad package

[Tags:bsd3, library]

A library for restricted monads based on associated datatypes. This allows datatypes such as Set to be made into monads. Users can either use the NoImplicitPrelude extension and use Control.RMonad directly, or use Control.RMonad.AsMonad with the embed and unEmbed combinators to use the normal Prelude monad operations.


[Skip to Readme]

Properties

Versions 0.1, 0.2, 0.3, 0.4, 0.4.1, 0.5, 0.6, 0.7, 0.8, 0.8.0.1, 0.8.0.2
Dependencies base (<5), containers, suitable (==0.1.*), transformers [details]
License BSD3
Copyright (c) 2008-9 Ganesh Sittampalam, 2008 Peter Gavin
Author
Maintainer Ganesh Sittampalam <ganesh@earth.li>
Stability provisional
Category Control
Source repository head: darcs get http://code.haskell.org/rmonad/
this: darcs get http://code.haskell.org/rmonad/ --tag version 0.8.0.2
Uploaded Mon Dec 23 08:05:45 UTC 2013 by GaneshSittampalam
Distributions NixOS:0.8.0.2
Downloads 2619 total (26 in the last 30 days)
Votes
0 []
Status Docs available [build log]
Successful builds reported [all 1 reports]

Modules

[Index]

Flags

NameDescriptionDefaultType
warn-as-errorbuild with warnings as errorsDisabledAutomatic

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Readme for rmonad

Readme for rmonad-0.8.0.2

rmonad provides a restricted monad class in the Control.RMonad hierarchy.
The class makes use of associated datatypes (available in GHC 6.8),
using an idea learnt from Wolfgang Jeltsch:
http://www.haskell.org/pipermail/haskell-cafe/2008-March/041084.html

It also provides a way to treat a restricted monad as a normal monad
using a generic wrapper type. This idea is described here:
http://hsenag.livejournal.com/11803.html?nc=5

See the haddock documentation for information on how to use it.

darcs get http://code.haskell.org/rmonad

TODO

Add instances for all the mtl stuff. Consider also doing this for mtl-tf
(namespacing issues?)

Add all the normal monad combinators

Should we use Monad etc rather than RMonad etc for naming?
 - Pro: standard modern namespacing conventions
 - Anti: Module names need to be different to allow co-existence

Do we actually want RApplicative etc? Nasty because most restrictions aren't much use on function types
DSELs are a good example of where Suitable could be closed over function types