文档章节

【SICP练习】148 练习4.4

NoMasp
 NoMasp
发布于 2015/09/08 21:48
字数 317
阅读 1
收藏 0

练习4-4

原文

Exercise 4.4. Recall the definitions of the special forms and and or from chapter 1:

● and: The expressions are evaluated from left to right. If any expression evaluates to false, false is returned; any remaining expressions are not evaluated. If all the expressions evaluate to true values, the value of the last expression is returned. If there are no expressions then true is returned.

● or: The expressions are evaluated from left to right. If any expression evaluates to a true value, that value is returned; any remaining expressions are not evaluated. If all expressions evaluate to false, or if there are no expressions, then false is returned.

Install and and or as new special forms for the evaluator by defining appropriate syntax procedures and evaluation procedures eval-and and eval-or. Alternatively, show how to implement and and or as derived expressions.

代码

 ((and? expr) (evaln (and->if expr) env)) 

 (define (and->if expr) (expand-and-clauses (and-clauses expr))) 
 (define (expand-and-clauses clauses) (if (null? clauses) (make-if 'true 'true 'false) (let ((first (car clauses)) (rest (cdr clauses))) (if (null? rest) (make-if first first 'false) (make-if first (expand-and-clauses rest) 'false))))) 

 ((or? expr) (evaln (or->if expr) env))  
 (define (or->if expr) (expand-or-clauses (or-clauses expr))) 
 (define (expand-or-clauses clauses) (if (null? clauses) (make-if 'true 'false 'true) (let ((first (car clauses)) (rest (cdr clauses))) (make-if first 'true (expand-or-clauses rest))))) 



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

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


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


版权声明:本文为 NoMasp柯于旺 原创文章,未经许可严禁转载!欢迎访问我的博客:http://blog.csdn.net/nomasp

本文转载自:http://blog.csdn.net/nomasp/article/details/44778307

NoMasp
粉丝 7
博文 334
码字总数 0
作品 0
镇江
程序员
私信 提问
加载中

评论(0)

简单的数据库接口插入到另一个数据库时报错

我在练习简单的数据库借口 用的是我自己的数据库 建了2张表 从一张表差数据然后 处理后在另一张表里面插入 如果已存在 就更新 报错如下: java.sql.SQLException: [Microsoft][ODBC Microsof...

钟跃民
2012/02/16
749
5
haproxy1.8安装配置

1 下载最新的版本的haproxy(最新版本为1.8),此链接需要×××才能打开下载链接为:http://www.haproxy.org/download/1.8/src/简介目前正在维护的版本有 1.4 1.5 1.6 1.7的 和正在测试的1...

zjycff
2017/12/15
0
0
利用MATLAB进行数学建模

一、用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数),然后用xi和添加了随机干扰...

cugwyman
2017/03/23
0
0
oracle中进行简单树查询(递归查询) ,PRIOR、CONNECT_BY_ROOT的使用

select ADDEPARTMENTCODE, ADDEPARTMENTUPLEVEL, ADDEPARTMENTNAME from (select ADDEPARTMENTCODE, ADDEPARTMENTUPLEVEL, ADDEPARTMENTNAME from ADDEPTARCHITECTURE order by ADDEPARTMENT......

吕兵阳
2014/08/30
5.6K
0
《神经网络和深度学习》之神经网络基础(第三周)课后作业——一个隐藏层的平面数据分类

由于没有找到课后练习,所有练习文章均参考点击打开链接,我已经将所有代码都实现过一遍了,没有错误,感谢博主 欢迎来到第三周的课程,在这一周的任务里,你将建立一个只有一个隐含层的神经...

bxg1065283526
2018/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

1.4掌握日志工具的使用——Android第一行代码(第二版)笔记

Android中的日志工具类是Log(android.util.Log),这个类中提供了如下5个方法来供我们打印日志。 Log.v():用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面...

Cy23
18分钟前
33
0
System.currentTimeMillis和System.nanoTime

精度与 精确 我想知道的是在更新对象在游戏中的位置时应该使用System.currentTimeMillis()还是System.nanoTime() ? 他们的运动变化与自上次通话以来经过的时间成正比,我想尽可能地精确...

javail
24分钟前
31
0
Linux就该这么学 -- 命令 - man

man命令用于查看某个命令的帮助信息 格式:man 命令名称 man man 表示查询man命令本身的帮助信息 man ls 表示查询ls命令的帮助信息 由于命令查询出来的内容一般都比较多,所以要了解相关的组...

jionzhao
26分钟前
31
0
Bmob后端云(云数据库表的具体操作)

1.注册创建应用请看该博客 Bomb基本操作 2.创建云数据库表 2.1 步骤一: 点击添加表 2.2 步骤二: 填写表信息 2.3 表结构详解 3. 操作表 3.1 添加一个表字段 3.1.1 步骤一: 点击添加列 3.1.2 ...

漫路h
27分钟前
23
0
Spring Bean的生命周期?

Spring Bean的生命周期简单易懂。在一个bean实例被初始化时,需要执行一系列的初始化操作以达到可用的状态。同样的,当一个bean不在被调用时需要进行相关的析构操作,并从bean容器中移除。 ...

无名氏的程序员
28分钟前
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部