6

I have a problem with this example

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

What is the problem with -1+ and 1+, when i evaluate it i get this result

  • DrScheme: -1+: this function is not defined
  • racket : reference to undefined identifier: -1+

but i write this instead and it works

(define (add x y)
  (if (= x 0)
      y
      (+ (- x 1) (+ y 1))))
Ahmad Ajmi
  • 7,007
  • 3
  • 32
  • 52

2 Answers2

12

For Racket:

  • Use add1 instead of 1+
  • Use sub1 instead of -1+ or 1-

The trouble is, none of those names are standard, so you can't reliably use them across all Scheme implementations. :-)

C. K. Young
  • 219,335
  • 46
  • 382
  • 435
2

You can fix this by adding SICP support to DrRacket.

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

Anymore trouble let me know.

Bart
  • 19,692
  • 7
  • 68
  • 77
nava
  • 55
  • 7