SA
Size: a a a
SA
MF
MF
Oℕ
AS
IV
Oℕ
GP
AS
P
AS
SA
P
GP
MF
MF
l
ΛВ
l
IA
def foo[F[_], G[_], A](fopt: F[Option[A]])(alt: F[G[A]])(implicit G: Applicative[G], F: Monad[F]) = {
F.flatMap(fopt) {
case Some(op) => F.pure(G.pure(op))
case _ => alt
}
}