首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Unlambda %d函数

Unlambda %d函数
EN

Stack Overflow用户
提问于 2010-11-28 10:57:26
回答 1查看 198关注 0票数 2

我想我需要在unlambda中详细说明D函数是如何工作的。现在,我正在尝试用Y组合器创建一个函数(阶乘),但它总是导致某种类型的无限循环。或者segfault,这取决于解释器。我非常确定D就是我想要在这里使用的。我试过这个:

代码语言:javascript
运行
复制
``d```sii``sii`.xi

它也有同样的无限循环。有人认为他们可以帮助我理解unlambda中的D吗?

..。

在unlambda表示法中,我的函数是

代码语言:javascript
运行
复制
```s``s``s`ks``s`kki``s``s`ks`ki`ki``s``s`ks``s`kki``s``s`ks`ki`ki``s`k`s``s``s``s``si`k`ki`k``s``si`k`ki`kk`k`ki`k`s`sk``s`k`s``s`ksk``s``s`ksk`k``s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk

Y= sss`ksskki``s``skskikissks``skkisskski`ki

阶乘=Y(\xy.0y1(My(x(Sy)

0= sssi`k`ki`kssikkikkk`ki (如果教堂数字为0,则返回K;如果是其他值,则返回KI。)

M= s`ksk (教堂数字的前缀乘数)

S= ssik``s``s``s``sikikkikkis``skskkk`kk (递减教会整数)

代码语言:javascript
运行
复制

我非常确定,如果它是正常评估的,首先是左边,它会起作用,但我不确定。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-09-15 22:07:21

我真的看不出d如何帮助阶乘函数,但d的用途演示起来很简单:

代码语言:javascript
运行
复制
 `.1` .2i => 21
``.1`d.2i => 12

在第一种情况下,基于eager评估规则,在.1之前评估.2

在第二种情况下,通过.1 "protected“传递.2,仅从外部进行评估。

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

https://stackoverflow.com/questions/4295091

复制
相关文章

相似问题

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