【SICP练习】118 练习3.45【待完成】

练习3-45

原文

Exercise 3.45. Louis Reasoner thinks our bank-account system is unnecessarily complex and error-prone now that deposits and withdrawals aren’t automatically serialized. He suggests that make-accountand-serializer should have exported the serializer (for use by such procedures as serializedexchange) in addition to (rather than instead of) using it to serialize accounts and deposits as makeaccount did. He proposes to redefine accounts as follows:

 (define (make-account-and-serializer balance)
    (define (withdraw amount)
       (if (>= balance amount)
           (begin (set! balance (- balance amount))
                   balance)
            "Insufficient funds"))
    (define (deposit amount)
       (set! balance (+ balance amount))
       balance)
    (let ((balance-serializer (make-serializer)))
       (define (dispatch m)
          (cond ((eq? m 'withdraw) (balance-serializer withdraw))
                ((eq? m 'deposit) (balance-serializer deposit))
                ((eq? m 'balance) balance)
                ((eq? m 'serializer) balance-serializer)
                (else (error "Unknown request -- MAKE-ACCOUNT"
                             m))))
        dispatch))

Then deposits are handled as with the original make-account:

(define (deposit account amount)
   ((account 'deposit) amount))

Explain what is wrong with Louis’s reasoning. In particular, consider what happens when serializedexchange is called.

代码

临时发现有误,待完成。




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



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


时间: 2024-09-29 06:34:53

【SICP练习】118 练习3.45【待完成】的相关文章

利用jquery.qrcode在页面上生成二维码且支持中文

 这篇文章主要介绍了利用jquery.qrcode在页面上生成二维码且支持中文.需要的朋友可以过来参考下,希望对大家有所帮助 实例如下:  代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www

js生成二维码实例(真实有效)

js文件  qrcode.js   代码 /*from tccdn minify at 2014-6-4 14:59:43,file:/cn/c/c/qrcode.js*/ /** * @fileoverview * - Using the 'QRCode for Javascript library' * - Fixed dataset of 'QRCode for Javascript library' for support full-spec. * - this library has

利用jquery.qrcode在页面上生成二维码且支持中文_jquery

实例如下: 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>    <title>使用j

使用jquery.qrcode.min.js实现中文转化二维码_jquery

今天还是要讲一下关于二维码的知识,前几篇讲解中有讲到我使用的可以生成二维码的js是qrcode.js,然后结合Cordovad的插件$cordovaBarcodeScanner插件可以扫描二维码,这样就基本完成了简单的扫一扫功能.后来在项目进行,开始要调用后台数据和传参数到接口的时候发现qrcode.js它只能解析英文或者数字,并且只能解析一个字符串!       而我所需要的是将一个对象转化成二维码,然后在扫描的时候取出对象中的数据,显然qrcode.js不能实现,经过查找,找到另一个jque

【SICP练习】40 练习1.45

 练习1.45 如果看到前面的文章,应该知道我喜欢将某个变量n先设成一个固定的数比如3.4什么的.这里我们依旧如此,先来看看如何写出开四次方根的过程.这道题的目的旨在让我们好好回顾前面的内容,毕竟只剩下一道题我们就完完全全的解决了第一章. 下面我来带大家一起回顾一下.fixed-point是以1个函数和一个初始猜测为参数的函数,用来计算不动点.所谓的不动点就是x=f(x)时的点x.比如这个式子,(fixed-point square 1.0),它会返回1,因为1的平方等于1. average

【SICP练习】74 练习2.45

 练习2.45 我们先将right-split和up-split抽象出一个split来. (define (split big-combinersmall-combiner)    (lambda (painter n)        (if (= n 0)           painter           (let ((smaller ((split big-combinersmall-combiner) painter (- n 1))))              (big-co

【SICP练习】45 练习2.4

 练习2.4 直接运用对比的技巧就可以猜测出相应的cdr表示如下: (define (cdr z)    (z (lambda (p q) q))) 但我们还是要按照题中要求用代换模型来检验.先来检验car的. (car (cons 0 1)) (car (lambda (m) (0 1))) ((lambda (z) (z (lambda (p q) p)))   (lambda (m) (0 1))) ((lambda (m) (0 1)) (lambda (p q) p)) ((lam

【SICP归纳】2 高阶函数和数据抽象

上一篇博文对应的是书中的第一章的一二两节,我们已经大致的有了一种构造的感觉不是么.书中展示了很多有趣的句法(syntax).现在我们要让思想进一步的抽象,写这篇博客的时候并未学完整本书,更不敢说对书中的内容有一个多深的领悟.但我一路学习过来,就感觉书中的示例越来越抽象,作者所引导我们的也是如此方向.博文也会持续更新下去,伴随着我的理解. 在这个专栏的[Scheme归纳]4 高阶函数中已经初步介绍了什么是高阶函数(Higher-order Procedures).而在这一节中,将用高阶函数来做抽象

华为2014年手机出货超7500万营收118亿美元

12月31日,余承东今日在新年致辞中透露,2014华为智能手机发货将超7500万台,同比增幅大于40%,预计销售收入超过118亿美元, 同比增长约30%.余承东称,华为消费者BG盈利能力持续提升,超额完成年度贡献利润目标,预计销售收入超过118亿美元,同比增长约30%.出货量上,2014年华为智能手机发货将超7500万台,同比增幅大于40%.其互联网品牌荣耀也超额完成全年利润目标,全球销售额增长近30倍.我们全球品牌知名度提升至65%,全球互联网沟通能力持续强化:华为成为Interbrand T