【SICP练习】103 练习2.81-2.97

练习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


时间: 2024-09-22 00:42:03

【SICP练习】103 练习2.81-2.97的相关文章

phpinfo()的小秘密(一个胖子嘴中刁着两支烟!:-) )

用浏览器访问 http://192.168.16.1/phpinfo.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 你将看到! 一个胖子嘴中刁着两支烟!:-) 秘密在logos.h中用数组定义的图像数据. unsigned char php_egg_logo[] = { 71, 73, 70, 56, 57, 97, 130, 0, 67, 0, 213, 255, 0, 0, 0, 0, 152, 138, 142, 104, 95, 105, 89

项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

一. 前言   泥瓦匠又和大家见面了,最近两天我在Code Review , 顺便代码小小的Refactoring(重构)下.先了解这个项目吧,这次解决的是数据源配置优化.因为这web项目中配置数据源的地方很多.例如 JDBC要配置数据源,Mybatis要配置数据源,Quartz定时任务要配置数据源,还有Log4j存记录到数据库也要配置-   如题目,兴许大家的疑惑看了前面的说明会明白.这次给大家带来的 数据源配置与优化:log4j 配置数据库连接池Druid.   提纲: 二.准备知识 三.正

php4的彩蛋_php基础

今天看了一些代码,看到了一个小彩蛋. <? /* env.php */ phpinfo(); ?> 用浏览器访问 http://ipaddress/dirname/env.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42 你将看到!    一个胖子嘴中刁着两支烟!:-) 秘密在logos.h中用数组定义的图像数据. unsigned char php_egg_logo[] = {      71, 73, 70, 56, 57, 97, 130,  0,

VS2003开发指南文档----中文

vs2003|开发指南|中文 下载链接来自微软高级应用开发俱乐部知识库:1.VS 2003 Guide.doc 目录:I. 执行概述 7简介 9设计目标 11Visual Studio .NET 2003 的新增功能 13II. 评估标准 15III. Microsoft 应用程序平台和工具 19可靠而强大的平台 23Windows 服务器系列 23.NET Framework 24Microsoft 企业级服务器 28今天和明天的连接平台 35智能客户端开发 35基于 Web 的开发 37基于

34个谷歌浏览器扩展程序推荐

谷歌控不少且都是识货的行家,所以望大家畅游的同时也分享下自己最宝贝的扩展,帮助有需要的小伙伴们一起自由翱翔在PC6天空! 欢迎刚刚加入的谷歌的新童鞋,为了不辜负因这些小扩展而装浏览器的朋友,偶这里再整理些简单实用的小扩展(34个)谢谢大家的信任! 祝大家快速上手并享受谷歌带来的极致!另.之前貌似被困的那个已经恢复但为了 不给作者添乱和让大家用的更长久,请大家低调- 1.Lookup Companion for Wikipedia 维基百科用户必备扩展.功能全面:保存您最近的维基查询记录,多语种,

js内置对象处理_打印学生成绩单的简单实现_javascript技巧

任务: 1.通过js的内置对象得到当前日期 var date=new Date(); var year=date.toString().slice(11,15); document.write(year.toString()+"年"); var month=date.getMonth(); month=month+1; if(month<10){ document.write("0"+month+"月"); }else{ document.

java验证微博账号的代码怎么写?急求大神指教········

问题描述 java验证微博账号的代码怎么写?急求大神指教········ 要怎么验证字符串是微博账号啊?如果该字符串是微博账号返回true,否则返回false,怎么才能验证它是不是微博的账号呢??? 解决方案 微博账户就是邮箱地址啊,用正则表达式匹配下. 解决方案二: 新浪邮箱.拿到后匹配,或者是uid 解决方案三: 微博并不一定用新浪的邮箱.我自己就用gmail的 解决方案四: 我一个邮箱,就没有注册过新浪微博,只能通过新浪微博的官方接口来验证是否可以登陆 解决方案五: 可以考虑通过微博接口,

使用UpdatePanel后如果在Render中篡改输出的html的问题

问题描述 想在Render时对页面的所有[]中的内容进行修改替换,当使用了UpdatePanel进行异步回发之后,会报错:请高手指点一下,谢谢 解决方案 解决方案二:?解决方案三:不行的,以前我也研究过了.解决方案四:找到一个相关资料了.你看看http://www.ibole.cn:88/.NET/%E4%BD%BF%E7%94%A8UpdatePanel%E5%90%8E%E5%A6%82%E6%9E%9C%E5%9C%A8Render%E4%B8%AD%E7%AF%A1%E6%94%B9%E

教你如何解密js/vbs/vbscript加密的编码异处理小结_javascript技巧

js/vbs/vbscript加密代码: <body style="font:12px"> <fieldset> <legend align="center">源码变异处理 </legend> <table> <tr valign=top> <td><br> <button onclick=encJSHTM()> JS 网页加密 </button>

微信Mars——xlog使用全解析

微信Mars--xlog使用全解析 如约而至,微信在12月19日开源了底层的通信库--Mars,其中有一个部分,是一个高性能的日志模块--xlog. xlog的详细介绍,大家可以参考微信技术公众号的这篇文章--微信终端跨平台组件 mars 系列(一) - 高性能日志模块xlog. 本篇文章将带领大家将xlog模块抽取出来,作为一个单独的模块来使用. 编译so库 首先,我们clone下Mars的源码,然后进入其中的libraries目录,直接执行下面的Python脚本: python build_