文档章节

【SICP练习】108 练习3.21

NoMasp
 NoMasp
发布于 2015/09/08 21:50
字数 417
阅读 5
收藏 0

练习3-21

原文

Exercise 3.21. Ben Bitdiddle decides to test the queue implementation described above. He types in the procedures to the Lisp interpreter and proceeds to try them out:

(define q1 (make-queue))

(insert-queue! q1 'a)
((a) a) 

(insert-queue! q1 'b) 
((a b) b) 

(delete-queue! q1)
((b) b)

(delete-queue! q1)
(() b)

“It’s all wrong!”he complains. “The interpreter’s response shows that the last item is inserted into the queue twice. And when I delete both items, the second b is still there, so the queue isn’t empty, even though it’s supposed to be.” Eva Lu Ator suggests that Ben has misunderstood what is happening. “It’s not that the items are going into the queue twice,” she explains. “It’s just that the standard Lisp printer doesn’t know how to make sense of the queue representation. If you want to see the queue printed correctly, you’ll have to define your own print procedure for queues.” Explain what Eva Lu is talking about. In particular, show why Ben’s examples produce the printed results that they do. Define a procedure print-queue that takes a queue as input and prints the sequence of items in the queue.

分析

Ben的代码本身没有问题,问题在于Lisp的标准输出函数和其所想要的输出方式不同而已。题目要求的就是定义一个过程print-queue来输出Ben所想的输出结果。

代码

(define (print-queue queue) (car queue))
;Value: print-queue

测试

(define q2 (make-queue))
;Value: q2

(print-queue q2)
;Value: ()

(insert-queue! q2 'a)
;Value 16: ((a) a)

(print-queue q2)
;Value 17: (a)

(insert-queue! q2 'b)
;Value 16: ((a b) b)

(print-queue q2)
;Value 17: (a b)

(delete-queue! q2)
;Value 16: ((b) b)

(print-queue q2)
;Value 18: (b)

(delete-queue! q2)
;Value 16: (() b)

(print-queue q2)
;Value: ()



感谢访问,希望对您有所帮助。 欢迎关注或收藏、评论或点赞。


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


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

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

NoMasp
粉丝 7
博文 334
码字总数 0
作品 0
镇江
程序员
私信 提问
自己搭建练习sql语句的环境~

突然想练习下sql语句,想在网上找个环境练习下找了半天既然没有。看到了一篇博文就以这篇博文为例子搭建个环境。(用到的工具打包)链接:http://pan.baidu.com/s/1nv8y8OD 密码:o5ls Navi...

skaiser
2017/06/19
0
0
centos 安装samba服务,挂载目录

centos 安装samba服务,挂载目录 Run - 学习练习复习2016-02-27108 阅读 安装服务samba挂载CentOS 方便在centos开发,安装samba [...] 点赞 安装服务samba挂载CentOS 作者:Run - 学习练习复...

Run - 学习练习复习
2016/02/27
0
0
李雯 2017-4-11 工作日报

8:00~9:00 業務内容: 1>处理Amazon网络订单4张,本味3张 成果: 1.友盛売上伝票9张 2.友利売上伝票7张 3.友利仕入伝票9张 4.送り状9张 5.振替伝票2张 9:00~12:00 業務内容: 根据友盛売上和聖元...

ribunn
2017/04/11
0
0
3.20工作日志

3.20:创建标签功能的bug调试及优化 3.21:编辑标签的UI界面及逻辑实现

ck_developer
2017/03/21
1
0
李雯 2017-4-19 工作日报

8:00~9:30 業務内容: 1>处理本味网络订单10张 成果: 1.友盛売上伝票13张 2.友利売上伝票10张 3.友利仕入伝票13张 4.送り状15张 5.振替伝票2张 9:30~11:00 業務内容: 根据4.7Amazon2017.3.21-...

ribunn
2017/04/19
1
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7 部署 redis 5.0.6 集群

环境 操作系统: CentOS7.7,关闭 firewalld 和 selinux Redis: 5.0.6 master 实例 10.0.4.110:6371 10.0.4.110:6372 10.0.4.110:6373 slave 实例 10.0.4.111:6371 10.0.4.111:6372 10.0.4.1......

俊赛潘安-才比管乐
12分钟前
3
0
怎么录制电脑上视频素材的声音

随着短视频的不断发展人们越来越喜欢利用空闲时间观看一些短视频用以打发零碎的时间,不少人发现这个机遇也匆匆走上制作短视频的道路,在制作短视频时配音是至关重要的,那你知道怎么在视频素...

cenfeng123
21分钟前
4
0
[springboot 开发单体web shop] 6. 商品分类和轮播广告展示

商品分类&轮播广告 因最近又被困在了OSGI技术POC,更新进度有点慢,希望大家不要怪罪哦。 上节 我们实现了登录之后前端的展示,如: 接着,我们来实现左侧分类栏目的功能。 商品分类|Produc...

IsaacZhang
21分钟前
3
0
java 静态代码块,代码块,构造方法执行顺序

回顾一下java的执行顺序 public class Demo { public Demo() { super(); System.out.println("this is Demo"); } static { System.out.println("this is static"); } { System.out.println("......

漫步行者
41分钟前
7
0
滴滴面试题答案思路

1.mysql 1.1.介绍下介绍下innodb的索引类型、数据结构 普通索引,唯一索引,主键索引:也就是聚簇索引,全文索引(FULLTEXT),聚集索引,非聚集索引等。 数据结构B+树: B+树特点 1.矮胖型,...

指尖Coding
43分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部