unzipWith is:exact

Unzip a sequence using a function to divide elements.
unzipWith f xs == unzip (fmap f xs)
Efficiency note: unzipWith produces its two results in lockstep. If you calculate unzipWith f xs and fully force either of the results, then the entire structure of the other one will be built as well. This behavior allows the garbage collector to collect each calculated pair component as soon as it dies, without having to wait for its mate to die. If you do not need this behavior, you may be better off simply calculating the sequence of pairs and using fmap to extract each component sequence.
Split elements in the input stream into two parts using a pure splitter function, direct each part to a different fold and zip the results. Definitions:
>>> unzipWith f = Fold.unzipWithM (return . f)

>>> unzipWith f fld1 fld2 = Fold.lmap f (Fold.unzip fld1 fld2)
This fold terminates when both the input folds terminate. Pre-release
Unzip a sequence using a function to divide elements.
unzipWith f xs == unzip (fmap f xs)
Efficiency note: unzipWith produces its two results in lockstep. If you calculate unzipWith f xs and fully force either of the results, then the entire structure of the other one will be built as well. This behavior allows the garbage collector to collect each calculated pair component as soon as it dies, without having to wait for its mate to die. If you do not need this behavior, you may be better off simply calculating the sequence of pairs and using fmap to extract each component sequence.
Unzip a vector with a function.
unzipWith f = unzip . map f
Unzipping the sequence of tuples. Since 0.7.0.0