6

この例に問題があります

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

-1+と1+の問題は何ですか、評価するとこの結果が得られます

  • DrScheme:-1+:この関数は定義されていません
  • ラケット:未定義の識別子への参照:-1+

しかし、私は代わりにこれを書き、それは機能します

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

2 に答える 2

12

ラケットの場合:

  • add1の代わりに使用1+
  • またはsub1の代わりに使用-1+1-

問題は、これらの名前はどれも標準ではないため、すべてのScheme実装で確実に使用できるわけではないということです。:-)

于 2011-10-08T05:35:27.663 に答える
2

DrRacketにSICPサポートを追加することでこれを修正できます。

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

もうトラブルは私に知らせてください。

于 2012-02-21T02:39:44.717 に答える