ID

Implementation

type ID[A] = A

implicit val idMonad: Monad[ID] =
  new Monad[ID] {
    def pure[A](a: A): ID[A] = a
    def flatMap[A, B](fa: ID[A])(f: A => ID[B]): ID[B] = f(fa)
  }