我正在努力理解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
,我没有回来。我哪里错了?
答案 0 :(得分:20)
我哪里错了?
无处!你完成了。请记住,变量名称并不重要;这是重要的结构。名称f
或x2
没有意义。只关注它们的使用方式。 1号教堂的数字是
λf. λx. f x
你有
λx2. (λx1. x2 x1)
将x2
重命名为f
,将x1
重命名为x
并vo!
λf. (λx. f x)
= λf. λx. f x