【SICP练习】147 练习4.3

简介:

练习4-3

原文

Exercise 4.3. Rewrite eval so that the dispatch is done in data-directed style. Compare this with the datadirected differentiation procedure of exercise 2.73. (You may use the car of a compound expression as the type of the expression, as is appropriate for the syntax implemented in this section.) .

分析

参照练习2.73即可。

 (define operation-table make-table) 
 (define get (operation-table 'lookup-proc)) 
 (define put (operation-table 'insert-proc)) 

 (put 'op 'quote text-of-quotation) 
 (put 'op 'set! eval-assignment) 
 (put 'op 'define eval-definition) 
 (put 'op 'if eval-if) 
 (put 'op 'lambda (lambda (x y) (make-procedure (lambda-parameters x) (lambda-body x) y))) 
 (put 'op 'begin (lambda (x y) (eval-sequence (begin-sequence x) y))) 
 (put 'op 'cond (lambda (x y) (evaln (cond->if x) y))) 

 (define (evaln expr env) 
         (cond ((self-evaluating? expr) expr) 
                   ((variable? expr) (lookup-variable-value expr env)) 
                   ((get 'op (car expr)) (applyn (get 'op (car expr) expr env))) 
                   ((application? expr) (applyn (evaln (operator expr) env) (list-of-values (operands expr) env))) 
                   (else  
                    (error "Unkown expression type -- EVAL" expr)))) 



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

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


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


目录
相关文章
|
10月前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
3853 101
|
9月前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
246 20
|
3月前
|
人工智能 自然语言处理 算法
数字化转型三阶段:信息化、数字化、数智化,到底有啥区别?
本文深入解析企业数字化转型的三个关键阶段:信息化、数字化与数智化。信息化是将业务流程搬进系统,实现流程规范化;数字化则是打通数据孤岛,实现数据流通与分析;数智化在此基础上引入智能算法,让系统具备自动决策能力。文章强调转型需循序渐进,不能跳步,信息化是基础,数字化是关键,数智化是目标。通过实际案例解析各阶段特征与实施路径,帮助企业明确自身所处阶段并制定合理转型策略。
|
10月前
|
消息中间件 存储 缓存
如果对方没做幂等!记一次生产订单重复的反思
公司旧系统中发现一个严重bug:用户支付一年服务费,系统却将有效期增加了两年。经分析,原因是消息队列(MQ)向第三方服务发送了两次消息,且该接口未实现幂等性控制。此问题可能导致财务损失和信誉受损。解决方案包括:生产者端通过请求频率限制、幂等键等防重措施;消费者端利用缓存和数据库确保幂等性;消息队列层配置去重功能、TTL和死信队列等。
102 0
|
12月前
|
缓存 前端开发 JavaScript
前端性能优化:打造流畅用户体验的秘籍
【10月更文挑战第20天】前端性能优化:打造流畅用户体验的秘籍
157 3
|
人工智能 安全 物联网
什么是分布式防火墙?
【8月更文挑战第23天】
468 0
什么是分布式防火墙?
|
Java 测试技术 Nacos
Nacos 如何实现生产环境中的灰度配置?
Nacos 如何实现生产环境中的灰度配置?
Nacos 如何实现生产环境中的灰度配置?
|
Java 开发工具 对象存储
PAI-AutoLearning 图像分类使用教程
PAI AutoLearning(简称PAI AL)自动学习支持在线标注、自动模型训练、超参优化以及模型评估。在平台上只需准备少量标注数据,设置训练时长即可得到深度优化的模型。同时自动学习PAI AL平台与EAS模型在线服务打通,一键完成模型部署。下面通过一个番茄(tomato)和黄瓜(cucumber)的图片分类示例来演示整个流程的实现具体操作实现步骤。
11780 0
PAI-AutoLearning 图像分类使用教程
|
存储 缓存 资源调度
flink面试问题总结(2)
flink面试问题总结(2)
flink面试问题总结(2)
|
资源调度 JavaScript 前端开发
vue3+ts项目搭建和封装(上篇)
vue3+ts项目搭建和封装(上篇)