SICP Видео Лекция 2 - PullRequest
       85

SICP Видео Лекция 2

6 голосов
/ 08 октября 2011

У меня проблема с этим примером

(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))))

Ответы [ 2 ]

12 голосов
/ 08 октября 2011

Для ракетки:

  • Используйте add1 вместо 1+
  • Используйте sub1 вместо -1+ или 1-

Проблема в том, что ни одно из этих имен не является стандартным, поэтому вы не можете надежно использовать их во всех реализациях Схемы.: -)

2 голосов
/ 21 февраля 2012

Вы можете исправить это, добавив поддержку SICP в DrRacket.

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

Больше проблем, дайте мне знать.

...