【SICP练习】150 练习4.6
练习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相关推荐
- MATLAB转化彩色图片为灰度图片命令行窗口代码:
转化彩色图片为灰度图片命令行窗口代码: >> imread docia.png %打开图片 docia.png >> whos %显示当前变量,发现产生临时变量ans,里 ...
- 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- ...
- 一篇价值百万的文章:我为什么在22岁辞去年薪150万的工作?
本文转载自http://www.cricode.com/4208.html 作者:奶牛Denny 今天是22岁的最后一天.几个月前,我从沃顿商学院毕业,用文凭上"最高荣誉毕业"的标 ...
- 被算法“监控”的打工人,这家公司 150 人被算法裁定为“不敬业”
整理 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 近日,一家公司通过 AI 算法裁掉三成员工的消息在网上引起热议.当你上班时突然收到一封邮件显示"效率低下"而 ...
- 分析Booking的150种机器学习模型,我总结了六条成功经验
(图片付费下载自视觉中国) 作者 | Adrian Colyer 译者 | Monanfei 出品 | AI科技大本营(ID:rgznai100) 本文是一篇有趣的论文(150 successful ...
- AI一分钟 | Facebook或将面临2万亿美元罚款;大疆寻求新一轮融资,估值150亿美元
整理 | 阿司匹林 一分钟AI 美国联邦贸易委员会正在对Facebook展开调查,如果有5000万Facebook用户的数据被泄露的话,Facebook可能会被判处2万亿美元的罚款. 无人机制造商大疆 ...
- 一周AI看点 | 董明珠投资150亿洛阳造机器人 北京首条无人驾驶地铁线空载试运行
本期一周AI看点包括行业新闻.技术应用.技术前沿.行业观点以及投融资等方面. 行业 联想设立1亿元种子基金,扶持大学生AI创业 日前,联想公司宣布拿出1亿元人民币建立种子基金,将用于AI人才培养工作. ...
- mysql hy000 1005,mysql – ERROR 1005(HY000):无法创建表(errno:150)
当我尝试在 mysql中创建一个表时,我收到一个错误. 任何提示解决吗? create table stock_in( ind int not null auto_increment, itemcod ...
- 有多个重载参数pow_面试深刨——150分面重载
前言 重载在工程实践中的价值一直备受争议,却一直很受面试官青睐.本文不评论派系问题,只探讨主流语言的现状.主旨在于阐明重载的核心原理,助力面试:同时希望大家以后不要滥用重载.更多想法,可以评论.可以私 ...
- 微软某程序员吐槽:如果毕业去字节,现在总包150万!如今一年才50万,看见字节的人都抬不起头!...
都说工作是围城,城里的人想出来,城外的人想进去,无论做出什么样的选择都会后悔. 一个毕业五年的微软程序员就对自己的选择表示"后悔死了",如果当初毕业时去字节,现在总包都破150万, ...
最新文章
- python京东商品采集_利用Python正则表达式抓取京东网商品信息
- 关于前端与微信交互账号绑定的问题
- Shell图形化监控网络流量
- mybatis 多对多 处理
- python迭代器_使用Python的迭代器遍历可迭代对象
- 90后的你,有什么赚钱方式?
- 纯java生成验证码 java生成图片并保存
- VUE 学习代码理解(1~5课时代码)
- xgboost安装_机器学习笔记(七)Boost算法(GDBT,AdaBoost,XGBoost)原理及实践
- 计算机视觉与图形学-神经渲染专题-神经体渲染:实时渲染KiloNeRF
- 2020-05-15-用于深度学习训练的分布式多租户GPU集群分析
- 小刘的BUG(sql注入)
- 美计算机科学学者建议:加强青少年网络安全意识引导
- matlab特定颜色提取
- 最新县及县以上行政区划代码(截止2014年10月31日)
- python msproject_MS Project(*.mpp文件)到PowerBi
- win10计算机丢失msvcr,Win10系统msvcp140.dll丢失怎样修复?
- mac多个html合并,如何在Mac上将多页文件扫描合成一个PDF文档
- unity中Game视图中实现和Scene视图中一样的摄像机操作
- 不用代码!手把手教你Excel构建数据分析预测模型!