Copyright | (c) Andy Gill 2001 (c) Oregon Graduate Institute of Science and Technology 2001 (c) Jeff Newbern 2003-2006 (c) Andriy Palamarchuk 2006 |
---|---|
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | libraries@haskell.org |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
- Computation type:
- Simple function application.
- Binding strategy:
- The bound function is applied to the input value.
Identity
x >>= f ==Identity
(f x) - Useful for:
- Monads can be derived from monad transformers applied to the
Identity
monad. - Zero and plus:
- None.
- Example type:
Identity
a
The Identity
monad is a monad that does not embody any computational strategy.
It simply applies the bound function to its input without any modification.
Computationally, there is no reason to use the Identity
monad
instead of the much simpler act of simply applying functions to their arguments.
The purpose of the Identity
monad is its fundamental role in the theory
of monad transformers.
Any monad transformer applied to the Identity
monad yields a non-transformer
version of that monad.
Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995.
Documentation
module Control.Monad
module Control.Monad.Fix
module Control.Monad.Trans.Identity
module Data.Functor.Identity