<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    sicp 4.2.2小節部分習題

    Posted on 2008-11-02 01:18 dennis 閱讀(1818) 評論(0)  編輯  收藏 所屬分類: 計算機科學與基礎

    4.27,

    ;;; L-Eval input:
    (define count 
    0)

    ;;; L
    -Eval value:
    ok

    ;;; L
    -Eval input:
    (define (id x)
      (set
    ! count (+ 1 count))
      x)

    ;;; L
    -Eval value:
    ok

    ;;; L
    -Eval input:
    (define w (id (id 
    10)))

    ;;; L
    -Eval value:
    ok

    ;;; L
    -Eval input:
    count

    ;;; L
    -Eval value:
    1

    ;;; L
    -Eval input:
    w

    ;;; L
    -Eval value:
    10

    ;;; L
    -Eval input:
    count

    ;;; L
    -Eval value:
    2

    至于原因,w在沒有強迫求值前,僅僅執行了一步(id 10),因此此時count為1,當要求打印w的時候force執行了第二步(id 10),因此count增加為2。

    4.28,當參數也是函數的時候,例如:
    (define square (lambda(x) (* x x)))
    (define (test proc a)
      (proc a))
    (test square 
    3)

    如果對operator不采用actual-value,那么square將延時求值,在執行(proc a)時無法辨認eval的過程類型。

    4.29,俺第一個想到的就是樹形遞歸的斐波那契數列:
    (define (fib n)
      (cond ((
    = 0 n) 0)
                ((
    = 1 n) 1)
                (
    else
                  (
    + (fib (- n 1)) (fib (- n 2))))))
    不帶記憶功能和帶記憶功能的force-it之間的性能差距非常明顯。

    第二問,有趣的地方在于square過程,注意到(define (square x) (* x x)),x在body出現了兩次,那么如果是使用不帶記憶功能的force-it, x將被求值兩次,如果x本身帶有副作用(例如例子里面的id過程),那么顯然副作用也將被調用兩次,因此答案不言自明。帶記憶功能的force-it版本中,count將仍然是1,而在不帶記憶功能的版本中count將增長到2。

    4.30,第一問,我也談不出所以然為什么ben的說法是正確的,關注下第二問的兩個過程在不同eval-sequence下的表現,(p1 1)的結果沒有改變都是(1 2),而(p2 1)在原始版本的eval-sequence中結果是1,而在Cy修改后的版本中(對中間步驟采用actual-value)結果是(1 2),也就是說在原始版本中的(set! x (cons x '(2)))的副作用根本沒有實現,而在修改后的版本中實現了。俺覺的這個問題很迷惑,惰性求值與side effect相互作用很奇特,不過我更偏向原始版本,因為我覺的這樣的實現更容易看清代碼的意圖,也就是說在透明性上更好,例如我分析p2過程就可以認為直接返回參數x;而實現副作用很容易讓人掉入陷阱,并且很可能引進難以查找的bug。




    主站蜘蛛池模板: 亚洲av无码无线在线观看| 亚洲成人激情在线| 亚洲欧美国产国产一区二区三区 | 日韩欧美亚洲中文乱码| 岛国大片免费在线观看| 亚洲国产精品无码中文lv| 性感美女视频免费网站午夜 | 色天使色婷婷在线影院亚洲| 大香人蕉免费视频75| 亚洲一本到无码av中文字幕| 在线精品免费视频| 亚洲AV无码国产一区二区三区| 国产一区在线观看免费| 一级毛片免费视频网站| 国产亚洲色婷婷久久99精品| 无码精品人妻一区二区三区免费看| 亚洲AV无码一区二区三区系列 | 99久久精品免费视频| 亚洲国产中文在线二区三区免| 国产一卡2卡3卡4卡2021免费观看| 亚洲一卡2卡3卡4卡乱码 在线| 国产午夜无码视频免费网站| 一区二区三区在线免费| 亚洲AV无码专区国产乱码电影| 一个人免费观看在线视频www | 在线综合亚洲中文精品| 国产精品免费综合一区视频| 国产精品小视频免费无限app| 久久久久亚洲AV无码专区首| 歪歪漫画在线观看官网免费阅读 | 美国毛片亚洲社区在线观看| 亚洲伊人成无码综合网| 最近中文字幕无免费| 亚洲精品伦理熟女国产一区二区| 亚洲日韩国产精品乱| 中文字幕无码播放免费| 成年大片免费视频播放一级 | 四虎免费影院4hu永久免费| 特级做A爰片毛片免费看无码| jlzzjlzz亚洲jzjzjz| 亚洲人成网站18禁止一区|