码迷,mamicode.com
首页 > 其他好文 > 详细

【SICP练习】106 练习3.7

时间:2015-03-11 19:41:24      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:created   account   objects   requires   sicp   

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

邮箱及Skype:nomasp@outlook.com
Facebookhttps://www.facebook.com/yuwang.ke
CSDN博客http://blog.csdn.net/nomasp
新浪微博http://weibo.com/nomasp



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

【SICP练习】106 练习3.7

标签:created   account   objects   requires   sicp   

原文地址:http://blog.csdn.net/nomasp/article/details/44202757

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!