有人可以通过替换向我解释我们如何得到一个数字“零”或其余的自然数?
例如值:“零”
λf.λx.x
如果我将这个表达式应用于另一个表达式:
"(λf.(λx.x)) a"
然后使用替换:
:=[a/f](λx.x)
:=(λx.x)
我错过了什么?我该如何解释这些数字表达式?
答案 0 :(得分:2)
教会数字n
是一个函数,它接受另一个函数f
并返回一个函数,该函数将f
应用于其参数n
次。所以0 a
(正如您所说,0
,λf.λx.x
)返回λx.x
,因为a
适用x
0次。
1 a
为您提供λx. a x
,2 a
为您提供λx. a (a x)
等等。
答案 1 :(得分:2)
以下是paper对Erhan Bagdemir的评论中基于answer的解释{/ 3}}。
要掌握的要点:
func handleNotificationFuncName(_ notification: Notification) {
let storyboard = UIStoryboard(name: "StoryboardName", bundle: Bundle.main)
if let vc = storyboard.instantiateViewController(withIdentifier: "pdfDisplayViewController") as? pdfDisplayViewController {
present(vc, animated: true, completion: nil)
}
}
- 是'接班人'功能(即接受教会数字并返回教堂数字的功能,它基本上和增量); f
- 是一个(教会数字)值,代表零' (计算起点)。牢记这一点:
x
将等于零,如果我们将通过相应的λf . λx . x
(在这种特殊情况下它不会将哪个函数作为f
传递,因为它永远不会已应用)和f
:
x
以下:
λf . λx . ZERO
将评估为1:
λf . λx . fx
和此:
λf . λx . INCREMENT ZERO
将符合2:
λf . λx . f f x
等等,对于所有连续的数字。
查看我的sepp2k与其他人({密切相关的)(broader) answer。
答案 2 :(得分:0)
教堂数字n(例如2)表示对任何给定参数n次(此处两次)应用任何给定函数的“动作”。
根据定义,教堂数字是具有两个参数的函数,即
1)一个功能
2)应用提供的函数的参数,表达式或值。
当提供的功能为后继功能且提供的第二个参数为Zero时,您将获得数字。 (在上面的示例中为2)
根据定义,教堂数字2
λf . λx . f( f( x))
,显然这是一个需要两个参数的函数。
在将后继函数(即f(x)= x + 1作为第一个参数,零作为第二个参数)传递给该函数时,我们得到...
f(f(0))
=f(1)
=2
此解释有点简化,因为在lambda演算中,后继函数的定义不为零。
参考:http://www.cse.unt.edu/~tarau/teaching/GPL/docs/Church%20encoding.pdf 教会编码的绝佳解释