lens-action-0.2.0.2: Monadic Getters and Folds

Copyright | (C) 2012-2014 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | provisional
Portability | non-portable
Safe Haskell | Safe
Language | Haskell98

Control.Lens.Action.Internal

Contents

- Actions

Description

Synopsis

- class (Monad m, Functor f, Contravariant f) => Effective m r f | f -> m r where
  - effective :: m r -> f a
  - ineffective :: f a -> m r
- newtype Effect m r a = Effect {
  - getEffect :: m r
  }

## Actions

class (Monad m, Functor f, Contravariant f) => Effective m r f | f -> m r where Source

An `Effective` `Functor` ignores its argument and is isomorphic to a `Monad` wrapped around a value.

That said, the `Monad` is possibly rather unrelated to any `Applicative` structure.

Methods

effective :: m r -> f a Source

ineffective :: f a -> m r Source

Instances

Effective Identity r (Const r) Source |
Monad m => Effective m r (Effect m r) Source |
Effective m r f => Effective m r (AlongsideRight f b) Source |
Effective m r f => Effective m r (AlongsideLeft f b) Source |
Effective m r f => Effective m (Dual r) (Backwards f) Source |

newtype Effect m r a Source

Wrap a monadic effect with a phantom type argument.

Constructors

Effect |

Fields

getEffect :: m r

Instances

Monad m => Effective m r (Effect m r) Source |
Functor (Effect m r) Source |
(Monad m, Monoid r) => Applicative (Effect m r) Source |
Contravariant (Effect m r) Source |
(Apply m, Semigroup r) => Apply (Effect m r) Source |
(Monad m, Monoid r) => Monoid (Effect m r a) Source |
(Apply m, Semigroup r) => Semigroup (Effect m r a) Source |