首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用教会数字的公式

使用教会数字的公式
EN

Stack Overflow用户
提问于 2017-04-04 19:53:31
回答 1查看 284关注 0票数 3

关于lambda微积分的wikipedia条目定义了一些与教会数字一起工作的公式,如

代码语言:javascript
复制
SUCC := λn.λf.λx.f (n f x)

在教会的论文中,他首先定义了他的λ微积分,他说

两个变量的..a函数,其值取格式良好的公式F和X,是formaula {F}(X),是递归的.

在后面的文章中,他称这个函数为B(m,n)

如何使用所有这些信息来描述像B这样的函数如何在SUCC 1上工作

我知道,我们必须把输入和输出作为素数的力量,就像他在整个论文中使用Gódel的编号系统一样,但是我发现很难把它们拼凑在一起。

EN

回答 1

Stack Overflow用户

发布于 2021-03-03 23:09:35

我使用lambda微积分和javascript。我将尝试展示一些小的例子,SUCC和函数B,也就是蓝知更鸟/构图是如何工作的,如何组合。

首先用Church-Numerals (在JS中)提醒一下:

代码语言:javascript
复制
const n0 = f => x => x       
const n1 = f => x => f(x) 
const n2 = f => x => f(f(x))     
const n3 = f => x => f(f(f(x)))

和继承SUCC := λnfx.f(nfx)的教会-数字在JS:const succ = n => f => x => f( n(f)(x) )。我们可以看到,succ-Function只是在前面使用了一个教堂数字,并添加了一个f,这样带有body f(x)succ(n1)就会是f(f(x))。因此,它最终完成了f的1+n组合。

代码语言:javascript
复制
// example creating new Church-Numbers with the Succesor-Function
const n4 = succ(n3)
const n5 = succ(n4)

// or do Addition with Church-Numbers
const n7  = n2(succ)(n5)
const n10 = n5(succ)(n5)

//to test if it works, us the helper-function churchtoJsNum
const churchtoJsNum = n => n(x => x + 1)(0)

churchtoJsNum(n10) // 10

还有另一种编写后继的方法,因为我们正在做n重组合:编写函数。Smullyan以咖喱的B组合器命名蓝鸟。

B := λfgx.f(gx)

在JS:const B = f => g => x => f(g(x))

现在可以将succB-Function结合起来。

代码语言:javascript
复制
const succ = n => f => x => B(f) (n(f)) (x)  

既然我们有了一个实际的组合函数,我们就可以定义后继函数,而无需提及最后的x值参数。

const succ = n => f => B(f)(n(f));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43216487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档