2011-10-08 30 views
6

Tôi có một vấn đề với ví dụ nàySICP video Bài giảng 2

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

là gì vấn đề với -1+ và 1+, khi tôi đánh giá nó tôi nhận được kết quả này

  • DrScheme: - 1+: chức năng này không được định nghĩa
  • vợt: tài liệu tham khảo để nhận dạng không xác định: -1+

nhưng tôi viết những dòng này để thay thế và nó wor ks

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

Trả lời

12

Đối vợt:

  • Sử dụng add1 thay vì 1+
  • Sử dụng sub1 thay vì -1+ hoặc 1-

Vấn đề là, không ai trong số những cái tên đó là tiêu chuẩn, vì vậy bạn không thể sử dụng chúng một cách đáng tin cậy trên tất cả các triển khai Đề án. :-)

+0

sub1 và add1 rất tuyệt, tôi nghĩ rằng Sussman chỉ sử dụng -1+ để giải thích ví dụ này. Cảm ơn Chris –

Các vấn đề liên quan