Posted on 2008-10-31 23:12
dennis 閱讀(452)
評論(0) 編輯 收藏 所屬分類:
計算機科學與基礎
4.25,如果在scheme解釋器的應用序求值下,unless定義為一個過程,那么
(* (factorial (- n 1))
將無窮遞歸下去。如果在正則序時,由于延時求值,僅當需要計算時才求值此表達式,不會造成無窮遞歸,在1的時候正常結束遞歸。
4.26,在上一節求值器的基礎上定義unless的語法形式還是很簡單的,
首先在analyze過程添加分析unless:
((unless? exp) (analyze (unless->if exp)))
然后定義unless?和unless->if
(define (unless? exp)
(tagged-list? exp 'unless))
(define (unless->if exp)
(make-if (cadr exp) (cadddr exp) (caddr exp)))
最后一問,構造一個unless與高階函數聯合使用的場景,在此場景下,unless不能定義成特殊形式,僅在定義成過程的情況下有效,我想像不出此場景。