This is another proof-layout question, this time from Bird 1.4.7.
We're asked to define the functions curry2 and uncurry2 for currying and uncurrying functions with two arguments. Simple enough:
curry2 :: ((a, b) -> c) -> (a -> (b -> c))
curry2 f x y = f (x, y)
uncurry2 :: (a -> (b -> c)) -> ((a, b) -> c)
uncurry2 f (x, y) = f x y
The following two assertions are obviously true theorems, but how are the formal proofs laid out?
1. curry2 (uncurry2 f) x y = f x y
2. uncurry2 (curry 2 f) (x, y) = f (x, y)
The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail. Get busy.