sicp 4.2.1两题

4.25,如果在scheme解释器的应用序求值下,unless定义为一个过程,那么
(* (factorial (- n 1))
将无穷递归下去。如果在正则序时,由于延时求值,仅当需要计算时才求值此表达式,不会造成无穷递归,在1的时候正常结束递归。

4.26,在上一节求值器的基础上定义unless的语法形式还是很简单的,
首先在analyze过程添加分析unless:

 ((unless? exp) (analyze (unless->if exp)))

然后定义unless?和unless->if

(define (unless? exp)
  (tagged-list? exp 'unless))
(define (unless->if exp)
  (make-if (cadr exp) (cadddr exp) (caddr exp)))

最后一问,构造一个unless与高阶函数联合使用的场景,在此场景下,unless不能定义成特殊形式,仅在定义成过程的情况下有效,我想像不出此场景。

文章转自庄周梦蝶  ,原文发布时间 2008-10-31

时间: 2024-09-20 11:39:36

sicp 4.2.1两题的相关文章

由于本人函授本科,期末JAVA两题编程不会写,楼主只会C。望高手们帮忙一下,明早一大早就要考试了,坐等

问题描述 某商场10年店庆活动,规定消费金额500元以上的部分可以给予95折,消费1000元以上的部分可以给予9折,消费2000元以上的部分可以给予85折.现要求设计一个程序,要求根据用户从键盘输入的商品总价计算出折后价.要求输出格式为:=======================原价:600.00元折后价:595.00元=======================设有一个四位数,它的四位数字分别是ABCD,而其又满足一下条件:ABCD*9=DCBA,试编写一段小程序计算这个四位数究竟是多少

sicp 4.3.1小节两题

本节开始介绍神奇的amb函数,为引入逻辑程序设计做铺垫.关于amb,有清华王垠的一个文档: http://cs2.swfc.edu.cn/~wanghuan/wangyin1/amb/amb.html 4.35,与an-element-of类似: (define (an-integer-between low high)   (require (not (> low high)))   (amb low (an-integer-between (+ low 1) high))) 4.36,与练习

求助高手教这两题.微信红包奉上

问题描述 asp.net编写ASP.net程序,界面如下图,当单击"提交"按钮后,在表单下面显示出表单提交的信息.文件以test3.html,test3.asp文件名存在Z:盘中.Web数据库根据要求完成test4.asp程序(test4.asp在z:盘),程序能读取test数据库的"银行存款"的表头和所有记录,并通过表格显示所有数据表内容.显示界面如下图所示.完成后的程序以原test4.asp文件名存在Z:盘中.weixinxudefender 解决方案 解决方案

sicp 2.4节小题尝试解答

这一节那是相当的有趣,抽象数据的多重表示:采用标志(tag)来区分和数据导向(data-directed)技术,稍微提了下消息传递.通过一张二维表格将类型.操作的分派机制介绍的很清楚,静态OO语言正是通过类型来决定消息的分派,而消息传递以列进行划分,每个类型都以过程来表征,也就是所谓的"智能数据对象",两者各有优缺点.当类型增加频繁时,消息传递风格的分派更容易扩展,当操作增加频繁时,反而是显式的类型分派更为容易扩展,这一点如果有OO设计经验应该很容易体会. 看看习题: 习题2.73,将

[剑指Offer] 第5章课后题详解

[剑指Offer] 第5章课后题详解 目录 剑指Offer 第5章课后题详解 目录 删除指定字符 分析 解法 优化 删除重复元素 分析 解法 判断变位词 分析 解法 求助 删除指定字符 本题为<剑指Offer>"面试题35:第一个只出现一次的字符"一节中的"相关题目". 定义一个函数,输入两个字符串,从第一个字符串中删除在第二个字符串中出现过的所有字符. 分析 字符是一个长度为8的数据类型,共256种可能.创建一个长度为256的bool型数组,数组下标为

【SICP练习】12 练习1.18

 练习1.8 和前两题一样,依旧是只能用对数步数.而且这个迭代过程要基于加.加倍和折半运算.这一个习题要用到前面的函数,因此最好的做法是,每次都将写好的代码保存起来. (load"Test1.18.scm") 这行代码可以用来加载代码.而保存可以用C-X,C-W. 以下是该题的代码,这次我们写成块结构: (define(* x y)       (define (*-iter x y product)              (cond ((= y 0) product)    

HDOJ(HDU) 2137 circumgyrate the string(此题用Java-AC不过!坑)

此题如果有用JavaACDSee,请评论,谢谢了. Problem Description Give you a string, just circumgyrate. The number N means you just circumgyrate the string N times, and each time you circumgyrate the string for 45 degree anticlockwise. Input In each case there is string

求各位大神帮忙做一下编译原理程序设计

问题描述 求各位大神帮忙做一下编译原理程序设计 1.设计词法分析器 设计各单词的状态转换图,并为不同的单词设计种别码.将词法分析器设计成供语 法分析器调用的子程序.功能包括:具备预处理功能.将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序:能够拼出语言中的各个单词:http://ask.csdn.net/#将拼出的标识符填入符号表:返回(种别码, 属性值).2.目标代码生成器c. 能完成指定寄存器个数的情况下将一中间代码程序段翻译成汇编语言目标代码(汇

Flash AS基础精典教程

教程 这次给大家带来MOOCK在世界性FLASH大会:FF2K1大会上的演说,要说到Action的权威,当然要数MOOCK,他写的ASDG(一本书)是可以和FLASH自带的AS字典相提并论的宝贝.虽然他是这样一个高高手,但是他的这个演讲却是非常的浅显,如果你某处读起来觉得难,那也一定是chocobo翻译得不好.(有些地方实在是太浅,我受不了就改了 ) 这篇文章预算的演讲时间很长,所以读起来也会觉得较长,你可以分开来读. 还有,本文是关于FLASH5的AS的,毕竟FLASH4的AS已经淘汰. 第一