我有两个ML功能
fun curry f x y = f(x, y);
fun uncurry g (x, y) = g x y;
我想证明
uncurry(curry(f)) = f
和
curry(uncurry(g)) = g
我在搜索引擎网站上搜索,但没有让我满意。 位于本文顶部的两个函数未明确定义。 例如,为了证明不连续(咖喱(f))= f我必须使用咖喱功能(有趣的咖喱f x y = f(x,y);)但是没有明确定义的咖喱。 如何证明两件事?
答案 0 :(得分:2)
我将展示如何演示curry (uncurry f) = f
。
curry (uncurry f) = (* by definition of uncurry *)
curry (fn (x,y) -> f x y) = (* by definition of curry *)
fn x y -> ((fn (x,y) -> f x y) (x,y)) = (* beta-reduction on innermost level *)
fn x y -> (f x y) = (* by eta-expansion *)
f
另一个问题可以解决。
注意:函数curry (uncurry f)
和f
在扩展意义上是相同的(我们接受函数扩展性公理,可以找到更多细节here。