練習問題 1.4.7
カリー化された関数をカリー化されてない版に変換する関数 uncurry を定義せよ. すべての
x
および
y
に対して以下が成り立つことを示せ.
curry (uncurry f) x y = f x y
uncurry (curry f) (x,y) = f (x,y)
curry
および
uncurry
の定義
curry :: ((a,b) -> c) -> (a -> b -> c)
curry f x y = f (x,y)
uncurry :: (a -> b -> c) -> ((a,b) -> c)
uncurry f (x,y) = f x y
curry (uncurry f) x y = f x y
の証明
curry (uncurry f) x y
= { curry の定義 }
(uncurry f) (x,y)
= { 関数適用は左結合 }
uncurry f (x,y)
= { uncurry の定義 }
f x y
uncurry (curry f) (x,y) = f (x,y)
の証明
uncurry (curry f) (x,y)
= { uncurry の定義 }
(curry f) x y
= { 関数適用は左結合 }
curry f x y
= { curry の定義 }
f (x,y)