Lambda演算和教堂数字混乱

时间:2009-06-26 20:09:39

标签: function lambda-calculus

我正在努力理解lambda演算和教会数字的基础知识。我一直在做很多阅读和练习,但我似乎一直在试图看看一些功能如何运作。

我坚持的例子如下。也许有人可以解释我哪里出错了。

1的教会数字可以表示为:

λf. λx. f x

教会数字(m n )的取幂函数可以表示为:

λm. λn. n m

我想要做的就是通过将指数函数应用于1和1,我得到1,因为1 1 = 1.我这样做,所以我更好地理解这些功能工作。我的工作如下,每次都卡住了:

// Exp (1 1)
(λm. λn. n m) (λf1. λx1. f1 x1) (λf2. λx2. f2 x2)
// Substitute for m
(λn. n (λf1. λx1. f1 x1)) (λf2. λx2. f2 x2)
// Substitute for n
(λf2. λx2. f2 x2) (λf1. λx1. f1 x1)
// Substitute for f2
(λx2. (λf1. λx1. f1 x1) x2)
// Substitute for f1
λx2. (λx1. x2 x1)

我被卡住了。我丢失了f个,只留下了x,我没有回来。我哪里错了?

1 个答案:

答案 0 :(得分:20)

  

我哪里错了?

无处!你完成了。请记住,变量名称并不重要;这是重要的结构。名称fx2没有意义。只关注它们的使用方式。 1号教堂的数字是

λf. λx. f x

你有

λx2. (λx1. x2 x1)

x2重命名为f,将x1重命名为x并vo!

λf. (λx. f x)
= λf. λx. f x