:: (a -> b -> c) -> Maybe a -> Maybe b -> Maybe c package:semigroupoids

Lift a binary function into a comonad with zipping
Generic liftF2. Caveats:
  1. Will not compile if w is a sum type.
  2. Types in w that do not mention the type variable must be instances of Semigroup.