{-# OPTIONS --without-K --safe #-}
module Function.Identity.Categorical {ℓ} where
open import Category.Functor
open import Category.Applicative
open import Category.Monad
open import Category.Comonad
open import Function
Identity : Set ℓ → Set ℓ
Identity A = A
functor : RawFunctor Identity
functor = record
  { _<$>_ = id
  }
applicative : RawApplicative Identity
applicative = record
  { pure = id
  ; _⊛_  = id
  }
monad : RawMonad Identity
monad = record
  { return = id
  ; _>>=_  = _|>′_
  }
comonad : RawComonad Identity
comonad = record
  { extract = id
  ; extend  = id
  }