Scheme解释器中正则序是怎么回事?

发布于 2022-09-02 00:50:35 字数 148 浏览 30 评论 0

在sicp中提到正则序是“先展开然后归约”,然而我没看到‘展开’和‘归约’的定义。
我想问(+ 3 3)=>6 为什么我们说他是‘归约’,不称为‘展开’?
我觉得‘归约’和‘展开’都是将运算符应用于实参,我找不到区别。
然后求教正则序求值步骤到底是怎么样的?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

旧伤还要旧人安 2022-09-09 00:50:35

可以看这里 http://staff.ustc.edu.cn/~xyfeng/teaching/TOPL/lectureNotes/04_lambda.pdf

如果有基础,可以直接跳到第34页

笑咖 2022-09-09 00:50:35

简单地说一下这里的展开和归约

(define A (* 5 5))
(define B (+ A 
(define C (- B B))
A
B
C

规约:将表达式计算为值,例如A。
展开:用表达式替换形参,例如将A代入B,得到展开的表达式。

现在再说一下,正则序和应用序
正则序:先展开再归约,例如C表达式替换成A表达式,然后在按照规则一步一步计算值。
应用序:先归约,再展开。先将形参的值计算出,将值代入计算式。例如将A的值算出等于25,将25代换B中的A再计算。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文