2011-10-08 26 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+来解释这个例子。谢谢克里斯 –