SICP视频讲座2

时间:2011-10-08 05:30:32

标签: scheme racket sicp

我对此示例有疑问

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

-1+和1+有什么问题,当我评估它时,我得到了这个结果

  • DrScheme:-1+:此函数未定义
  • racket:对未定义标识符的引用:-1 +

但是我写了这个而且它有效

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

2 个答案:

答案 0 :(得分:12)

对于球拍:

  • 使用add1代替1+
  • 使用sub1代替-1+1-

问题是,这些名称都不是标准名称,因此您无法在所有Scheme实施中可靠地使用它们。 : - )

答案 1 :(得分:2)

您可以通过向DrRacket添加SICP支持来解决此问题。

http://www.neilvandyke.org/racket-sicp/

再麻烦让我知道。