2011-10-08 12 views
6

tengo un problema con este ejemploSICP Vídeo Conferencia 2

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

¿Cuál es el problema con -1+ y 1+, cuando evalúo yo conseguir este resultado

  • DrScheme: - 1+: esta función no está definida
  • raqueta: referencia al identificador no definido: -1+

pero escribo este lugar y Trab ks

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

Respuesta

12

Para Raqueta:

  • Uso add1 en lugar de 1+
  • Uso sub1 en lugar de -1+ o 1-

El problema es que ninguno de esos nombres son estándar, por lo no puede usarlos de manera confiable en todas las implementaciones de Scheme. :-)

+0

sub1 y add1 son geniales, creo que Sussman usa -1+ solo para explicar este ejemplo. Gracias Chris –