無点

map2 :: (a -> b) -> (c -> d) -> ([a], [c]) -> ([b], [d])
-- map2 f g (xs, ys) = (map f xs, map g ys)
-- map2 f g = uncurry $ (. map g) . (,) . map f
-- map2 f g = uncurry $ (. (,) . map f) (. map g)
-- map2 f g = uncurry $ (. (,) . map f) $ flip (.) $ map g
-- map2 f = uncurry . (. (,) . map f) . flip (.) . map
-- map2 f = uncurry . flip (.) (flip (.) . map) (. (,) . map f)
-- map2 f = (uncurry .) $ flip (.) (flip (.) . map) $ flip (.) $ ((,) .) $ map f
map2 = (uncurry .) . flip (.) (flip (.) . map) . flip (.) . ((,) .) . map

四段目ぐらいから急速に読めなくなる。それにしても組合せ構文に flip を含めるのはちょっと卑怯な気もしたり。かと言って . と部分適用だけでは flip は作れそうな感じではないし、そうなると不可能という可能性も…。