無点
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 は作れそうな感じではないし、そうなると不可能という可能性も…。