【SICP练习】106 练习3.7

练习3-7

原文

Exercise 3.7. Consider the bank account objects created by make-account, with the password modification described in exercise 3.3. Suppose that our banking system requires the ability to make joint accounts. Define a procedure make-joint that accomplishes this. Make-joint should take three arguments. The first is a password-protected account. The second argument must match the password with which the account was defined in order for the make-joint operation to proceed. The third argument is a new password. Make-joint is to create an additional access to the original account using the new password. For example, if peter-acc is a bank account with password open-sesame, then

(define paul-acc
 (make-joint peter-acc 'open-sesame 'rosebud))

will allow one to make transactions on peter-acc using the name paul-acc and the password rosebud. You may wish to modify your solution to exercise 3.3 to accommodate this new feature.

分析

make-joint需要有3个参数:
1.有密码保护的帐户名
2.必须与账号的密码匹配的原密码
3.新密码

而其会返回一个过程,因此在此处需要一个lambda表达式,并且其有一个参数mode和一个传入的密码参数。另外在输出错误信息的函数中也需要一个参数,即是它并不使用,只是出于兼容性的考虑,在前面的博客中我们也遇到过这种问题。

代码

(define (make-joint origin-acc old-password new-password)

  (define (display-wrong-message msg)
    (display "Incorrect password"))

  (lambda (given-password mode)
    (if (eq? given-password new-password)
        (origin-acc old-password mode)
        display-wrong-message)))
;Value: make-joint



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



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


时间: 2024-09-24 13:00:44

【SICP练习】106 练习3.7的相关文章

Dreamweaver MX 2004视频宝典教程(106)

dreamweaver|教程 第 106 集:策划的重要性 课程目标:了解网站策划的重要性 课程要点:网站策划对一个网站来说是必不可少的.它能告诉我们制作网站的目的以及如何实现. [全屏观看] | [下载视频] 本教程尺寸为 800 * 600 建议全屏在线观看或下载观看,以达到最佳观看效果

常用JavaScript语法106条

1.输出语句:document.write("") 2.JS中的注释为:// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大

社保基金扎堆介入盛运股份106组合表现活跃

本周多家上市公司公布2010年年报,社保基金的"面孔"又出现在多只个股的前十大流通股东中.盛运股份有三家不同公司管理的社保组合进驻,嘉实旗下全国社保106组合投资格外积极,和该公司旗下公募基金携手新进国腾电子.立思辰和海南航空三只个股,易方达基金执掌的社保109组合则介入中小板公司宇顺电子. 对比前十大流通股东变化情况可以发现,基金公司管理的多只社保基金在去年四季度已"潜伏"进入多只个股,其中有节能环保概念的盛运股份受到社保基金集体青睐. 华夏基金管理的全国社保10

Lisp和SICP

  大概不少programmer都看过<黑客与画家>,作者用了整整一章的篇幅讨论Lisp的强大.我自然就会手痒痒.      几个月前,几天内攻城略地搞定了Python,用的方法便是用Py重写之前开发的类库,这样就能很快熟悉语法,培养语感.喜上眉梢的我,也尝试将同样的策略用在Lisp上,我开始查看它的语法和函数,比如如何定义类和函数,如何赋值等等.      但我慢慢发现,Lisp几乎都不需要学语法,就是括号和几个基本过程,无非就是lambda, define, let,cons,car,cd

[LeetCode]*106.Construct Binary Tree from Inorder and Postorder Traversal

题目 Given inorder and postorder traversal of a tree, construct the binary tree. Note: You may assume that duplicates do not exist in the tree. 思路 思路和[LeetCode]*105.Construct Binary Tree from Preorder and Inorder Traversal一样. 代码 /*---------------------

阿里Q2财报:云计算增速106%超越亚马逊

本文讲的是阿里Q2财报:云计算增速106%超越亚马逊[IT168资讯]8月12日,阿里巴巴集团发布2015年第二季度(2016年财年第一季度)财报.财报显示,阿里巴巴旗下云计算子公司阿里云第二季度收入4.85亿元,比去年同期大幅增长106%,成为阿里巴巴收入增速最快业务. 这是阿里巴巴第二次在财报中单列出云计算业务收入.上一季度财报显示,阿里云收入3.88亿元,同比上年增长82%,本次财报中,阿里云收入增幅扩大至106%,成为全球增速最快云服务商. 国内市场上,阿里云是唯一一家公布收入数据的云服

【SICP归纳】3 层次性数据和符号数据

在学习书中第二章的时候有个问题一直让我很困扰,那就是2.2.4节的实例,因为没法输出书中华丽的图案,只能是一对英文字母.这在几个月前浅浅的学了一会Common Lisp的时候也是如此,当时看到书中有个实例是书中输出了很赞的线条,而我只会输出一堆点.后来才知道让Lisp输出图形化界面是更高层次的工程,想想还是先把SICP搞定. 上一篇博文中我们谈到了复合数据,关于它有两个重点.第一,数据抽象,这也就意味着你可以隔离那些数据对象.第二,在Lisp中有个特殊的方式能够黏住一些东西,它就是pair,而c

P2P频现跑路诈骗:问题平台共计106家

王莹 ["相比去年,今年还称不上跑路潮,但是今年诈骗之多可以称之为诈骗潮."网贷之家首席运营官石鹏峰对<第一财经日报>表示,去年的问题平台多以自融.拆标为主,而今年以诈骗为主] "相比去年,今年还称不上跑路潮,但是今年诈骗之多可以称之为诈骗潮."网贷之家首席运营官石鹏峰对<第一财经日报>记者表示,去年的问题平台多以自融.拆标为主,而今年以诈骗为主.由于诈骗平台一般难以长时间运营,诈骗手段拙劣容易被发现,因此涉及的受害人群和资金量相比去年较少.

【SICP归纳】5 泛型运算符

关于数据抽象,有两个很重要的思想.一是在构建一些水平的抽象障碍在这个系统中.用某些对象来代换这些单独使用的抽象屏障.二是当需要使用某种形式的数据对象时,往往可以由其他人来将其实现,而我们并不需要知道具体操作.这都是在数据抽象方面非常强大的编程方法. 但是这还不足以完成一个真正复杂的系统.在这里的问题出在"其他人",作者常举的例子是Georges.归结来说,有很多人都工作在这个系统上,但所有的这些设计表达式很显然是不兼容的.问题是所有的整个系统却又不可能由一个人来完成,可又无法让所有的实