Implement a minimal `Option` that has `map` and `flatMap`. ```scala import scala.{Option => _} // implement here sealed trait Option[+T] { def map[P](fn: T => P): Option[P] = { fold(x => Some(fn(x)), None) // this match { // case Some(value) => Some(fn(value)) // case None => None // } } def flatMap[P](fn: T => Option[P]): Option[P] = { fold(fn, None) // this match { // case Some(value) => fn(value) // case None => None // } } def fold[P](someFn: T => P, noneFn: => P): P = { this match { case Some(value) => someFn(value) case None => noneFn } } } case object None extends Option[Nothing] case class Some[T](value: T) extends Option[T] ```