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

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

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

    莊周夢(mèng)蝶

    生活、程序、未來(lái)
       :: 首頁(yè) ::  ::  :: 聚合  :: 管理

        本節(jié)實(shí)現(xiàn)了amb求值器,題目都是擴(kuò)展這個(gè)求值器,引入一些特殊的過(guò)程。我的嘗試解答從4.51開(kāi)始
    習(xí)題4.51,要求實(shí)現(xiàn)permanent-set!,這個(gè)過(guò)程的副作用在遇到失敗時(shí)不撤銷,實(shí)現(xiàn)如下:
    ;擴(kuò)充analyze 
    ((permanent
    -assignment? exp)
             (analyze
    -permanent-assignment exp))

    ;實(shí)現(xiàn)

    (define (permanent
    -assignment? exp)
      (tagged
    -list? exp 'permanent-set!))
    (define (analyze-permanent-assignment exp)
       (let ((var (assignment
    -variable exp))
            (vproc (analyze (assignment
    -value exp))))
          (
    lambda(env succeed fail)
            (vproc env
                   (
    lambda(val fail2)
                          (set
    -variable-value! var val env) 
                          (succeed 
    'ok fail2))
                   fail))))

    習(xí)題4.52,實(shí)現(xiàn)if-fail的特殊形式,在第一個(gè)表達(dá)式如果求值成功,就返回該表達(dá)式的值,否則返回第二個(gè)表達(dá)式的值,實(shí)現(xiàn)如下:
    ;擴(kuò)充analyze
     ((
    if-fail? exp)
             (analyze
    -if-fail exp))
    ;實(shí)現(xiàn)
    (define (
    if-fail? exp)
      (tagged
    -list? exp 'if-fail))
    (define (analyze-if-fail exp)
       (let ((pproc (analyze (
    if-predicate exp)))
            (cproc (analyze (
    if-consequent exp))))
         (
    lambda(env succeed fail)
            (pproc env (
    lambda(pred-value fail2)
                         (succeed pred
    -value fail2))
                   (
    lambda() (cproc env succeed fail))))))
    pproc如果執(zhí)行成功,就返回結(jié)果pred-value,否則就執(zhí)行fail過(guò)程(lambda() (cproc env succeed fail)),測(cè)試略。

    習(xí)題4.53,根據(jù)題意可知這個(gè)過(guò)程返回結(jié)果應(yīng)該是(prime-sum-pair '(1 3 5 8) '(20 35 110))的所有結(jié)果,執(zhí)行也是如此:
    ;;; AMB-Eval value:
    ((
    8 35) (3 110) (3 20))

    習(xí)題4.54,將require實(shí)現(xiàn)為特殊形式:
    ;擴(kuò)充analyze
    ((require? exp)
             (analyze
    -require exp))

    ;實(shí)現(xiàn)
    (define (require? exp)
      (tagged
    -list? exp 'require))
    (define (require-predicate exp)
      (cadr exp))
    (define (analyze
    -require exp)
      (let ((pproc (analyze (require
    -predicate exp))))
        (
    lambda (env succeed fail)
          (pproc env (
    lambda(pred-value fail2)
                       (
    if (not pred-value)
                           (fail2)
                           (succeed 
    'ok fail2)))
                 fail))))


    主站蜘蛛池模板: 亚洲美女大bbbbbbbbb| 香蕉视频免费在线| 午夜免费福利网站| 91福利免费网站在线观看| 91精品国产亚洲爽啪在线影院| 日韩欧美一区二区三区免费观看| 综合一区自拍亚洲综合图区| 国产亚洲综合成人91精品| 免费无码黄十八禁网站在线观看| 极品美女一级毛片免费| 亚洲欧洲高清有无| 亚洲日韩在线第一页| 国产成人精品免费午夜app| 黄色毛片视频免费| 亚洲国产成人精品青青草原| 日本中文一区二区三区亚洲| 久久国产精品免费看| 成人a免费α片在线视频网站| 亚洲av永久中文无码精品 | 亚洲国产综合精品中文字幕 | 中国在线观看免费高清完整版| 亚洲av第一网站久章草| 亚洲欧洲国产精品香蕉网| 69堂人成无码免费视频果冻传媒| 国产亚洲情侣久久精品| 亚洲精品无码AV人在线播放| 国产精品成人免费一区二区 | 好男人资源在线WWW免费| 亚洲精品无码永久中文字幕 | 亚洲人AV永久一区二区三区久久| 日本一卡精品视频免费| 亚洲av永久无码一区二区三区| 久久久久久久尹人综合网亚洲| 免费特级黄毛片在线成人观看| 国产av无码专区亚洲av毛片搜| 亚洲av成人一区二区三区在线观看| 99re在线免费视频| 野花视频在线官网免费1| 亚洲一区二区三区在线观看蜜桃| 亚洲永久精品ww47| 成人av免费电影|