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 LICENSE) |
Maintainer | ross@soi.city.ac.uk |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | GHC2021 |
Control.Monad.Identity
Description
- 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.
Documentation
Constructors
Identity | |
Fields
|
Instances
MonadFix Identity | |||||
Defined in Data.Functor.Identity | |||||
MonadZip Identity | |||||
Foldable Identity | |||||
Defined in Data.Functor.Identity Methods fold :: Monoid m => Identity m -> m foldMap :: Monoid m => (a -> m) -> Identity a -> m foldMap' :: Monoid m => (a -> m) -> Identity a -> m foldr :: (a -> b -> b) -> b -> Identity a -> b foldr' :: (a -> b -> b) -> b -> Identity a -> b foldl :: (b -> a -> b) -> b -> Identity a -> b foldl' :: (b -> a -> b) -> b -> Identity a -> b foldr1 :: (a -> a -> a) -> Identity a -> a foldl1 :: (a -> a -> a) -> Identity a -> a elem :: Eq a => a -> Identity a -> Bool maximum :: Ord a => Identity a -> a minimum :: Ord a => Identity a -> a | |||||
Foldable1 Identity | |||||
Defined in Data.Foldable1 Methods fold1 :: Semigroup m => Identity m -> m foldMap1 :: Semigroup m => (a -> m) -> Identity a -> m foldMap1' :: Semigroup m => (a -> m) -> Identity a -> m toNonEmpty :: Identity a -> NonEmpty a maximum :: Ord a => Identity a -> a minimum :: Ord a => Identity a -> a foldrMap1 :: (a -> b) -> (a -> b -> b) -> Identity a -> b foldlMap1' :: (a -> b) -> (b -> a -> b) -> Identity a -> b foldlMap1 :: (a -> b) -> (b -> a -> b) -> Identity a -> b foldrMap1' :: (a -> b) -> (a -> b -> b) -> Identity a -> b | |||||
Eq1 Identity | |||||
Defined in Data.Functor.Classes | |||||
Ord1 Identity | |||||
Defined in Data.Functor.Classes Methods liftCompare :: (a -> b -> Ordering) -> Identity a -> Identity b -> Ordering | |||||
Read1 Identity | |||||
Defined in Data.Functor.Classes Methods liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Identity a) liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Identity a] liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Identity a) liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Identity a] | |||||
Show1 Identity | |||||
Defined in Data.Functor.Classes Methods liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Identity a -> ShowS liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Identity a] -> ShowS | |||||
Traversable Identity | |||||
Applicative Identity | |||||
Functor Identity | |||||
Monad Identity | |||||
Generic1 Identity | |||||
Defined in Data.Functor.Identity Associated Types
| |||||
Data a => Data (Identity a) | |||||
Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Identity a -> c (Identity a) gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Identity a) toConstr :: Identity a -> Constr dataTypeOf :: Identity a -> DataType dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Identity a)) dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Identity a)) gmapT :: (forall b. Data b => b -> b) -> Identity a -> Identity a gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Identity a -> r gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Identity a -> r gmapQ :: (forall d. Data d => d -> u) -> Identity a -> [u] gmapQi :: Int -> (forall d. Data d => d -> u) -> Identity a -> u gmapM :: Monad m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a) gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a) gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Identity a -> m (Identity a) | |||||
IsString a => IsString (Identity a) | |||||
Defined in Data.String Methods fromString :: String -> Identity a | |||||
Storable a => Storable (Identity a) | |||||
Defined in Data.Functor.Identity Methods alignment :: Identity a -> Int peekElemOff :: Ptr (Identity a) -> Int -> IO (Identity a) pokeElemOff :: Ptr (Identity a) -> Int -> Identity a -> IO () peekByteOff :: Ptr b -> Int -> IO (Identity a) pokeByteOff :: Ptr b -> Int -> Identity a -> IO () | |||||
Monoid a => Monoid (Identity a) | |||||
Semigroup a => Semigroup (Identity a) | |||||
Bits a => Bits (Identity a) | |||||
Defined in Data.Functor.Identity Methods (.&.) :: Identity a -> Identity a -> Identity a (.|.) :: Identity a -> Identity a -> Identity a xor :: Identity a -> Identity a -> Identity a complement :: Identity a -> Identity a shift :: Identity a -> Int -> Identity a rotate :: Identity a -> Int -> Identity a setBit :: Identity a -> Int -> Identity a clearBit :: Identity a -> Int -> Identity a complementBit :: Identity a -> Int -> Identity a testBit :: Identity a -> Int -> Bool bitSizeMaybe :: Identity a -> Maybe Int isSigned :: Identity a -> Bool shiftL :: Identity a -> Int -> Identity a unsafeShiftL :: Identity a -> Int -> Identity a shiftR :: Identity a -> Int -> Identity a unsafeShiftR :: Identity a -> Int -> Identity a rotateL :: Identity a -> Int -> Identity a | |||||
FiniteBits a => FiniteBits (Identity a) | |||||
Defined in Data.Functor.Identity Methods finiteBitSize :: Identity a -> Int countLeadingZeros :: Identity a -> Int countTrailingZeros :: Identity a -> Int | |||||
Bounded a => Bounded (Identity a) | |||||
Defined in Data.Functor.Identity | |||||
Enum a => Enum (Identity a) | |||||
Defined in Data.Functor.Identity | |||||
Floating a => Floating (Identity a) | |||||
Defined in Data.Functor.Identity Methods exp :: Identity a -> Identity a log :: Identity a -> Identity a sqrt :: Identity a -> Identity a (**) :: Identity a -> Identity a -> Identity a logBase :: Identity a -> Identity a -> Identity a sin :: Identity a -> Identity a cos :: Identity a -> Identity a tan :: Identity a -> Identity a asin :: Identity a -> Identity a acos :: Identity a -> Identity a atan :: Identity a -> Identity a sinh :: Identity a -> Identity a cosh :: Identity a -> Identity a tanh :: Identity a -> Identity a asinh :: Identity a -> Identity a acosh :: Identity a -> Identity a atanh :: Identity a -> Identity a log1p :: Identity a -> Identity a expm1 :: Identity a -> Identity a | |||||
RealFloat a => RealFloat (Identity a) | |||||
Defined in Data.Functor.Identity Methods floatRadix :: Identity a -> Integer floatDigits :: Identity a -> Int floatRange :: Identity a -> (Int, Int) decodeFloat :: Identity a -> (Integer, Int) encodeFloat :: Integer -> Int -> Identity a significand :: Identity a -> Identity a scaleFloat :: Int -> Identity a -> Identity a isInfinite :: Identity a -> Bool isDenormalized :: Identity a -> Bool isNegativeZero :: Identity a -> Bool | |||||
Generic (Identity a) | |||||
Defined in Data.Functor.Identity Associated Types
| |||||
Ix a => Ix (Identity a) | |||||
Defined in Data.Functor.Identity Methods range :: (Identity a, Identity a) -> [Identity a] index :: (Identity a, Identity a) -> Identity a -> Int unsafeIndex :: (Identity a, Identity a) -> Identity a -> Int inRange :: (Identity a, Identity a) -> Identity a -> Bool rangeSize :: (Identity a, Identity a) -> Int unsafeRangeSize :: (Identity a, Identity a) -> Int | |||||
Num a => Num (Identity a) | |||||
Defined in Data.Functor.Identity | |||||
Read a => Read (Identity a) | |||||
Defined in Data.Functor.Identity | |||||
Fractional a => Fractional (Identity a) | |||||
Defined in Data.Functor.Identity | |||||
Integral a => Integral (Identity a) | |||||
Defined in Data.Functor.Identity Methods quot :: Identity a -> Identity a -> Identity a rem :: Identity a -> Identity a -> Identity a div :: Identity a -> Identity a -> Identity a mod :: Identity a -> Identity a -> Identity a quotRem :: Identity a -> Identity a -> (Identity a, Identity a) divMod :: Identity a -> Identity a -> (Identity a, Identity a) | |||||
Real a => Real (Identity a) | |||||
Defined in Data.Functor.Identity Methods toRational :: Identity a -> Rational | |||||
RealFrac a => RealFrac (Identity a) | |||||
Show a => Show (Identity a) | |||||
Eq a => Eq (Identity a) | |||||
Ord a => Ord (Identity a) | |||||
type Rep1 Identity | |||||
Defined in Data.Functor.Identity type Rep1 Identity = D1 ('MetaData "Identity" "Data.Functor.Identity" "base" 'True) (C1 ('MetaCons "Identity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1)) | |||||
type Rep (Identity a) | |||||
Defined in Data.Functor.Identity type Rep (Identity a) = D1 ('MetaData "Identity" "Data.Functor.Identity" "base" 'True) (C1 ('MetaCons "Identity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a))) |