shithub: MicroHs

ref: bd9e211f7c14b4d8c5cc527321a2645e9f4bb1ad
dir: /lib/Data/Functor/Identity.hs/

View raw version
-- Copyright 2023 Lennart Augustsson
-- See LICENSE file for full license.
module Data.Functor.Identity(Identity(..), runIdentity) where
import Primitives
import Control.Applicative
import Control.Monad
import Data.Bool
import Data.Eq
import Data.Function
import Data.Functor
import Data.Int
import Data.Ord
import Text.Show

newtype Identity a = Identity a
  deriving (Eq, Ord, Show)

runIdentity :: forall a . Identity a -> a
runIdentity (Identity a) = a

instance Functor Identity where
  fmap f (Identity a) = Identity (f a)

instance Applicative Identity where
  pure a = Identity a
  Identity f <*> Identity a = Identity (f a)

instance Monad Identity where
  Identity a >>= f = f a