SICP视频讲座2

Ahm*_*jmi 6 scheme sicp racket

我对这个例子有疑问

(define (+ x y)
  (if (= x 0)
      y
      (+ (-1+ x) (1+ y))))
Run Code Online (Sandbox Code Playgroud)

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

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

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

(define (add x y)
  (if (= x 0)
      y
      (+ (- x 1) (+ y 1))))
Run Code Online (Sandbox Code Playgroud)

Chr*_*ung 12

对于球拍:

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

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