I like this because it generalizes `zipWith` to arbitrary numbers of arguments. That way instead of making `zipWith2`, `zipWith3`, ... you could just write

f `S.map` xs1 `S.apply` xs2 `S.apply` xs3