Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

SICP Video Lecture 2

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))))
like image 961
Ahmad Ajmi Avatar asked Oct 08 '11 05:10

Ahmad Ajmi


2 Answers

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. :-)

like image 197
Chris Jester-Young Avatar answered Oct 30 '22 18:10

Chris Jester-Young


You can fix this by adding SICP support to DrRacket.

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

Anymore trouble let me know.

like image 37
nava Avatar answered Oct 30 '22 18:10

nava