def kleisliCompose[A, B, C]( f: (B) => Maybe[C], g: (A) => Maybe[B]): (A) => Maybe[C] = { a: A => for (b <- g(a); c <- f(b)) yield c }