Summary: Generic function thats transposes a value
f (g a) to
g (f a).
This is an interesting generic function since it uses multiple other generic
ZipWith are required for definining the sum and product cases of the
generic function. The others make the generic function easy to use.
NOTE: Be aware of the special case for empty values noted in the
The type of a generic function that takes a generic value and non-generic container and returns the container filled with other generic values.