packages feed

effects-0.2.1: README.md

Control.Effects
===============

Control.Effects is a Haskell library for programming with effects, like in the the [Eff language][Eff] by Andrej Bauer and Matija Pretnar. Effects can be used instead of monad transformers, they are designed to be easier to use and to define.

Installation
------------

    cabal install effects

Using effects
-------------

Here's an example how to use the state effect from `Control.Effects.State`.

    example :: (Int, Int)
    example = run $ do
      with (ref 5) $ \x -> do
        with (ref 10) $ \y -> do
          x =: (+) <$> get x <*> get y
          y =: (+) <$> get x <*> get y
          (,) <$> get x <*> get y

Every instance of an effect is given a name (`x` and `y` in this example), which makes is possible to easily mix several instances of the same effect.

For more examples see [examples.hs](https://github.com/sjoerdvisscher/effects/blob/master/examples.hs).

[Eff]: http://math.andrej.com/category/programming/eff/?category_name=programming/eff