网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月21日漏签0天
drracket吧 关注:376贴子:747
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 3回复贴,共1页
<<返回drracket吧
>0< 加载中...

【SICP习题1.5解答】

  • 只看楼主
  • 收藏

  • 回复
  • 周玉斌
  • 宏图大志
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
Ben Bitdiddle发明了一种检测方法,能够确定解释器究竟采用哪种求值,是采用应用序,还是采用正则序。他定义了下面两个过程:
(define (p) (p))
(define (test x y)
(if (= x 0)
0
y))
而后他求值下面的表达式:
(test 0 (p))
如果某个解释器采用的是应用序求值,Ben会看到什么情况?如果解释器采用正则序求值,他又会看到什么情况?请对你的回答做出解释。(无论采取正则序或者应用序,假定特殊形式if的求值规则总是一样的。其中的谓词部分先行求值,根据其结果确定随后求值的子表达式部分。)


  • 周玉斌
  • 宏图大志
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
1.结果
应用序求值,程序将进入死循环不会输出结果。
正则学求值,结果为0
------------------
2.分析
应用序
(test 0 (p)) -> (test 0 (p)的结果) 再展开。由于(p)是一个自循环函数,所以程序将陷入死循环,不会进入扩展。
正则序
(test 0 (p)) -> (if (= x 0) 0 (p)) -> 0
正则序不预先求值,而是等展开后再求值,由于if特殊操作,先对谓词运算,然后根据结果再对正确的分支进行计算,由于x=0,判断为真,直接输出0。不再对(p)进行计算了。
------------------
scheme的宏是正则序的,而宏扩展后的程序仍然是应用序的。可以应用这个特性做一些特殊的运算。


2025-05-21 16:50:29
广告
  • 维他命猿臂舞
  • 初见括号
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你把应用和正则搞反了


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回drracket吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示