simon.vergauwen
fun <F, A, B, C> liftA2(f: (A) -> (B) -> C, Fa: Kind<F, A>, Fb: Kind<F, B>, AF: Applicative<F>): Kind<F, C> = AF.map2(Fa, Fb) { (a,b) -> f(a)(b) }