Scheme解释器中正则序是怎么回事?
在sicp中提到正则序是“先展开然后归约”,然而我没看到‘展开’和‘归约’的定义。
我想问(+ 3 3)=>6 为什么我们说他是‘归约’,不称为‘展开’?
我觉得‘归约’和‘展开’都是将运算符应用于实参,我找不到区别。
然后求教正则序求值步骤到底是怎么样的?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以看这里 http://staff.ustc.edu.cn/~xyfeng/teaching/TOPL/lectureNotes/04_lambda.pdf
如果有基础,可以直接跳到第34页
简单地说一下这里的展开和归约
规约:将表达式计算为值,例如A。
展开:用表达式替换形参,例如将A代入B,得到展开的表达式。
现在再说一下,正则序和应用序
正则序:先展开再归约,例如C表达式替换成A表达式,然后在按照规则一步一步计算值。
应用序:先归约,再展开。先将形参的值计算出,将值代入计算式。例如将A的值算出等于25,将25代换B中的A再计算。