2011-10-08 28 views
6

我有一個問題,這個例子SICP視頻講座2

(define (+ x y) 
    (if (= x 0) 
     y 
     (+ (-1+ x) (1+ y)))) 

什麼問題-1 + 1 +和,當我評價它,我得到這樣的結果

  • DrScheme: - 1+:該功能是沒有定義
  • 球拍:參照未定義的標識符:-1 +

,但我寫這個代替它活像KS

(define (add x y) 
    (if (= x 0) 
     y 
     (+ (- x 1) (+ y 1)))) 

回答

12

對於球拍:

  • 使用add1而不是1+
  • 使用sub1,而不是-1+1-

麻煩的是,沒有這些名字是標準的,所以您無法在所有Scheme實現中可靠地使用它們。 :-)

+0

sub1和add1都很棒,我認爲Sussman只使用-1+來解釋這個例子。謝謝克里斯 –