練習問題 1.6.2
f :: (a,b) -> cであるようなすべての
fに対して,以下を満たす関数
swapを定義せよ.
flip (curry f) = curry (f . swap)
flip (curry f) = curry (f . swap)
= { 外延性の原理 }
flip (curry f) x y = curry (f . swap) x y
= { flip の定義 }
(curry f) y x = curry (f . swap) x y
= { curry の定義 }
f (y,x) = (f . swap) (x,y)
= { (.) の定義 }
f (y,x) = f (swap (x,y))
= { Leibniz相等性 }
(y,x) = swap (x,y)
swap :: (a,b) -> (b,a)
swap (x,y) = (y,x)