HKT<KT, E> map3<C, D, E>( Monad<KT, C> mc, Monad<KT, D> md, E Function(A a, C c, D d) f) => flatMap((a) => mc.flatMap((c) => md.map((d) => f(a, c, d))));