【SICP练习】103 练习2.81-2.97
2015-09-08 00:00
405 查看
练习2-81
这里再次需要用到第186页的创建表格部分内容。当然了现在完全可以只是将make-table加载到这道题中。还有我们前面几题中用到的apply-generic。a)
载入 Louis 的强制过程后,对两个复数调用exp会出现解释器假死的情况。
b)
Louis并没有纠正该问题,反而会让程序进入无限循环之中。
c)
解决这个错误的办法就是让apply-generic能够在其两个输入的参数的类型相同时让强制转换停止下来。
(define (apply-generic op . args) (let ((type-tags (map type-tag args))) (let ((proc (get op type-tags))) (if proc (apply proc (map contents args)) (if (= (length args) 2) (let ((type1 (car type-tags)) (type2 (cadr type-tags)) (a1 (car args)) (a2 (cadr args))) (if (equal? type1 type2) (error "No method for these types" (list op type-tags)) (let ((t1->t2 (get-coercion type1 type2)) (t2->t1 (get-coercion type2 type1))) (cond (t1->t2 (apply-generic op (t1->t2 a1) a2)) (t2->t1 (apply-generic op a1 (t2->t1 a2))) (else (error "No method for these types" (list op type-tags))))))) (error "No method for these types" (list op type-tags)))))))
抱歉:剩余部分待完成。
感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。
为使本文得到斧正和提问,转载请注明出处:
http://blog.csdn.net/nomasp
版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp
相关文章推荐
- 设计模式之行为型模式 - 调用行为的传递问题
- 让我们做个简单的解释器(三)
- 让我们做个简单的解释器(一)
- 风讯注入exp(hta版)代码发布
- SQLServer APPLY表运算符使用介绍
- oracle11gR2使用exp导出命令时报EXP-00011错误的解决方法
- Java 版的 Ruby 解释器 JRuby 1.7.14 发布
- ORACLE EXP不能导出空表的原因分析及解决方法
- sql server 2008中的apply运算符使用方法
- javascript中call和apply的用法示例分析
- 详解C语言的exp()函数和ldexp()函数以及frexp()函数
- JavaScript中的call方法和apply方法使用对比
- 理清apply(),call()的区别和关系
- Javascript中call与apply的学习笔记
- 理解JavaScript的caller,callee,call,apply
- oracle中exp,imp的使用详解
- phpwind Exp 漏洞利用
- JavaScript中apply与call的用法意义及区别说明
- 完美解决IE低版本不支持call与apply的问题