练习4-6

原版的

Exercise 4.6. Let expressions are derived expressions, because
(let (( ) … ( )) )
is equivalent to
((lambda ( … ) ) )
Implement a syntactic transformation let->combination that reduces evaluating let expressions to evaluating combinations of the type shown above, and add the appropriate clause to eval to handle let expressions.

分析

这道题须要我们将let表达式转换成对应的表达式。

(let (( ) … ( )) )

从上面的演示样例我们能够看到在let表达中。如果其为expr。用cdr能够得到(( ) … ( )),然后再用高阶函数map搭配car来取出所有的var。

相同的,如果要取出exp部分,先用cadr,再用高阶函数map搭配cadr。

而body部分用caddr就能够直接求出了。

然后就能够開始写let->combination,其传入一个參数expr。

((lambda ( … ) ) )

依据这段演示样例代码呢,我们先调用书中第256页的make-lambda来构造前面的一部,这个函数有两个參数parameter和body。

这样一来就所有都完毕了,当然了,还须要将let?

增加到eval中。在此之前也要定义let?

相同要调用第256页的tagged-list?

。那么接下来就是详细的代码咯。

代码

(define (let-vars expr) (map car (cadr expr)))(define (let-exp expr) (map cadr (cadr expr)))(define (let-body expr) (caddr expr))(define (let->combination expr)(cons (make-lambda (let-vars expr) (let-body expr))(let-exp expr)))(define (let?

expr) (tagged-list? expr 'let)) ((let? expr) (eval (let->combination expr) env))



感谢您的訪问,希望对您有所帮助。

欢迎大家关注或收藏、评论或点赞。


为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp


版权声明:本文 NoMasp王克在 原创文章,未经授权严禁转载!欢迎到我的博客:http://blog.csdn.net/nomasp

转载于:https://www.cnblogs.com/mengfanrong/p/4890054.html

【SICP练习】150 练习4.6相关推荐

  1. MATLAB转化彩色图片为灰度图片命令行窗口代码:

    转化彩色图片为灰度图片命令行窗口代码: >> imread docia.png   %打开图片 docia.png >> whos  %显示当前变量,发现产生临时变量ans,里 ...

  2. curl: (3) [globbing] error: bad range specification after pos 150的解决方法

    在线上服务器上执行下面的命令 curl -vo /dev/null 'http://120.52.72.46:80/fileshare3010.dfiles.eu/c3pr90ntcsf0/auth- ...

  3. 一篇价值百万的文章:我为什么在22岁辞去年薪150万的工作?

    本文转载自http://www.cricode.com/4208.html 作者:奶牛Denny 今天是22岁的最后一天.几个月前,我从沃顿商学院毕业,用文凭上"最高荣誉毕业"的标 ...

  4. 被算法“监控”的打工人,这家公司 150 人被算法裁定为“不敬业”

    整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,一家公司通过 AI 算法裁掉三成员工的消息在网上引起热议.当你上班时突然收到一封邮件显示"效率低下"而 ...

  5. 分析Booking的150种机器学习模型,我总结了六条成功经验

    (图片付费下载自视觉中国) 作者 | Adrian Colyer 译者 | Monanfei 出品 | AI科技大本营(ID:rgznai100) 本文是一篇有趣的论文(150 successful ...

  6. AI一分钟 | Facebook或将面临2万亿美元罚款;大疆寻求新一轮融资,估值150亿美元

    整理 | 阿司匹林 一分钟AI 美国联邦贸易委员会正在对Facebook展开调查,如果有5000万Facebook用户的数据被泄露的话,Facebook可能会被判处2万亿美元的罚款. 无人机制造商大疆 ...

  7. 一周AI看点 | 董明珠投资150亿洛阳造机器人 北京首条无人驾驶地铁线空载试运行

    本期一周AI看点包括行业新闻.技术应用.技术前沿.行业观点以及投融资等方面. 行业 联想设立1亿元种子基金,扶持大学生AI创业 日前,联想公司宣布拿出1亿元人民币建立种子基金,将用于AI人才培养工作. ...

  8. mysql hy000 1005,mysql – ERROR 1005(HY000):无法创建表(errno:150)

    当我尝试在 mysql中创建一个表时,我收到一个错误. 任何提示解决吗? create table stock_in( ind int not null auto_increment, itemcod ...

  9. 有多个重载参数pow_面试深刨——150分面重载

    前言 重载在工程实践中的价值一直备受争议,却一直很受面试官青睐.本文不评论派系问题,只探讨主流语言的现状.主旨在于阐明重载的核心原理,助力面试:同时希望大家以后不要滥用重载.更多想法,可以评论.可以私 ...

  10. 微软某程序员吐槽:如果毕业去字节,现在总包150万!如今一年才50万,看见字节的人都抬不起头!...

    都说工作是围城,城里的人想出来,城外的人想进去,无论做出什么样的选择都会后悔. 一个毕业五年的微软程序员就对自己的选择表示"后悔死了",如果当初毕业时去字节,现在总包都破150万, ...

最新文章

  1. python京东商品采集_利用Python正则表达式抓取京东网商品信息
  2. 关于前端与微信交互账号绑定的问题
  3. Shell图形化监控网络流量
  4. mybatis 多对多 处理
  5. python迭代器_使用Python的迭代器遍历可迭代对象
  6. 90后的你,有什么赚钱方式?
  7. 纯java生成验证码 java生成图片并保存
  8. VUE 学习代码理解(1~5课时代码)
  9. xgboost安装_机器学习笔记(七)Boost算法(GDBT,AdaBoost,XGBoost)原理及实践
  10. 计算机视觉与图形学-神经渲染专题-神经体渲染:实时渲染KiloNeRF
  11. 2020-05-15-用于深度学习训练的分布式多租户GPU集群分析
  12. 小刘的BUG(sql注入)
  13. 美计算机科学学者建议:加强青少年网络安全意识引导
  14. matlab特定颜色提取
  15. 最新县及县以上行政区划代码(截止2014年10月31日)
  16. python msproject_MS Project(*.mpp文件)到PowerBi
  17. win10计算机丢失msvcr,Win10系统msvcp140.dll丢失怎样修复?
  18. mac多个html合并,如何在Mac上将多页文件扫描合成一个PDF文档
  19. unity中Game视图中实现和Scene视图中一样的摄像机操作
  20. 不用代码!手把手教你Excel构建数据分析预测模型!

热门文章

  1. Spring Boot整合 Thymeleaf 模板引擎
  2. [读书笔记]Linux命令行与shell编程读书笔记01
  3. 由php nginx 出现 500错误的启示
  4. CollectionBase的使用
  5. javascript常用函数集
  6. 一个gSOAP web服务可以用多线程技术来处理请求
  7. 遇到一个不得其解的问题。
  8. Dubbo-admin无法显示Group分组信息
  9. vue+express+mongoose项目构建
  10. MyCAT-1.4-RC基准测试