Stock Typeclasses: Monad

trait Monad[F[_]] extends Applicative[F] with Bind[F] { self =>
  // No abstract methods, but introduces bind through Bind:
  // def bind[A, B](fa: F[A])(f: A => F[B]): F[B]
}

At this point we have the ability to put a value into a context (F[_] as shown above), as well as perform transformations on values held within contexts like that (through bind and map amongst others).