What's a monad? What's a monad? trait Monad[A] { def map[B](f: A => B): Monad[B] def flatMap[B](f: A => Monad[B]): Monad[B] } Note: there is no single, special Monad base trait! Provides a standard interface for composing and sequencing operations on some contained value(s) map: Applies a "regular" function to the contained value(s) flatMap: Applies a "monadic" function to the contained value(s) T