{-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Control.Monad.Identity (Identity(..)) where newtype Identity a = Identity { Identity a -> a runIdentity :: a } deriving Int -> Identity a -> ShowS [Identity a] -> ShowS Identity a -> String (Int -> Identity a -> ShowS) -> (Identity a -> String) -> ([Identity a] -> ShowS) -> Show (Identity a) forall a. Show a => Int -> Identity a -> ShowS forall a. Show a => [Identity a] -> ShowS forall a. Show a => Identity a -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Identity a] -> ShowS $cshowList :: forall a. Show a => [Identity a] -> ShowS show :: Identity a -> String $cshow :: forall a. Show a => Identity a -> String showsPrec :: Int -> Identity a -> ShowS $cshowsPrec :: forall a. Show a => Int -> Identity a -> ShowS Show instance Functor Identity where fmap :: (a -> b) -> Identity a -> Identity b fmap = (b -> Identity b forall a. a -> Identity a Identity (b -> Identity b) -> (Identity a -> b) -> Identity a -> Identity b forall b c a. (b -> c) -> (a -> b) -> a -> c .) ((Identity a -> b) -> Identity a -> Identity b) -> ((a -> b) -> Identity a -> b) -> (a -> b) -> Identity a -> Identity b forall b c a. (b -> c) -> (a -> b) -> a -> c . ((a -> b) -> (Identity a -> a) -> Identity a -> b forall b c a. (b -> c) -> (a -> b) -> a -> c . Identity a -> a forall a. Identity a -> a runIdentity) instance Applicative Identity where pure :: a -> Identity a pure = a -> Identity a forall a. a -> Identity a Identity; Identity a -> b f <*> :: Identity (a -> b) -> Identity a -> Identity b <*> Identity a x = b -> Identity b forall a. a -> Identity a Identity (b -> Identity b) -> b -> Identity b forall a b. (a -> b) -> a -> b $ a -> b f a x instance Monad Identity where Identity a x >>= :: Identity a -> (a -> Identity b) -> Identity b >>= a -> Identity b f = a -> Identity b f a x