当前位置:  开发笔记 > 编程语言 > 正文

溶解lambda演算

如何解决《溶解lambda演算》经验,为你挑选了1个好方法。

我有以下lambda演算:

(?x. + (- x 1)) 9 3

正确的beta减少是:

+ (- 9 1) 3

我犯了一个错误,取而代之的是9号码:

+ (- 3 1) 9

而且我得到了相同的结果.

在与解决方案进行比较之前,我没有意识到这是错误的.

我是否必须采取最接近的替代,在这种情况下是9?



1> pigworker..:

你在这个算术例子中得到相同答案的事实是由算术而不是lambda演算引起的巧合.

如果你写了更多的空格来使术语结构更清晰,那么就会更容易看出发生了什么

(\x. + (- x 1)) 9 3

意思是,用无偿的额外括号显示解析树,

((\x. (+ (- x 1))) 9) 3

因为应用程序与左侧相关联("而不是像六十年代我们所做的那样" - Roger Hindley).

所以,3是在错误的地方替代x.我们只有

( (\x. (+ (- x 1))) 9 ) 3
  =
(+ (- 9 1)) 3
  =
(+ 8) 3
  =
11

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有