Схема и пусть синтаксис - PullRequest
4 голосов
/ 04 марта 2010
 (define (Integral f a b N)  
    ;define h as a constant
    (let((h (/ (- b a) N))))       
     (define (Term n)   
      (* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))   
            (* 4 (f (+ a (* 2 (* (- n 1) h)))))  
            )  
     ))  
     (+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0))))  

Этот код выдает ошибку r5rs: body: нет выражения в теле в: (r5rs: body) Не могли бы вы помочь?

1 Ответ

6 голосов
/ 04 марта 2010

Вы потеряли брекеты после сдачи. После того как вы определили константу в let, код, который использует константу, должен находиться внутри области действия let. Отсюда ваша ошибка по поводу пропуска тела выражения.

Вот исправленный код:

(define (Integral f a b N)
  ; define h as a constant
  (let ((h (/ (- b a) N)))
    (define (Term n)
      (* (/ h 3) (+ (* 2 (f (+ a (* 2 (* n h)))))
                    (* 4 (f (+ a (* 2 (* (- n 1) h))))))))

    (+ (* (/ h 3) (+ (f a) (f b))) (sum Term a next (/ N 2.0)))))

Кстати, вам все еще нужно определить функцию суммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...