@override HKT<KT, B> ap<B>(covariant Monad<KT, B Function(A a)> a) => a.flatMap((f) => flatMap((v) => pure(f(v))));