Permalink
Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
14 lines (10 sloc) 509 Bytes
(define (unless condition usual-value exceptional-value)
  (if condition exceptional-value usual-value))

(define (factorial n)
  (unless (= n 1)
          (* n (factorial (- n 1)))
          1))

在应用序的语言中,在应用 unless 过程时,会依次计算出其所有参数后,在进入函数体,而上面的 factorial 由于参数中引用了自身,所以会导致死循环

但在正则序的语言中,参数是到最后真正用到时才求值,就能够避免这个问题。