module Control.Applicative.Identity where import Control.Applicative import Prelude newtype Identity a = Identity { Identity a -> a runIdentity :: a } instance Functor Identity where fmap :: (a -> b) -> Identity a -> Identity b fmap a -> b f (Identity a x) = b -> Identity b forall a. a -> Identity a Identity (a -> b f a x) 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 (a -> b f a x)