Добавьте векторные элементы (схема R5RS) - смотрите пересмотренный раздел кода - PullRequest
0 голосов
/ 12 декабря 2010

Я хотел бы добавить все элементы в вектор на схеме.

Я полагаю, что мои проблемные области в том, как я использую лямбду (очень неуверен в правильном использовании этого выражения), присваиваю длину вектора переменной i и добавляю значение, которое я пытаюсь получить из каждого из элементов вектора , Не уверен, как исправить ошибку на основе сообщения об ошибке.

Я получаю ошибку:

# <процедура>

код:

(define (sum X)
   (define length (vector-length X)) ;potential problem area
       (lambda (length)
       (lambda (total)
          (do (
              (i length (- i 1))
              (a (vector-ref X i)(+ a total)) ; potential problem area
              )
           ((zero? i) total)
            )
         )
         )
  )

Пересмотренный код (спасибо пользователю 479988) - я удалил лямбды, понял, что они мне не нужны. И определил переменную i с начальным 0.

Ошибка: теперь вывод показывает 0.

The code:

(define (sum X)
  (define length (vector-length X)) ;potential problem area
  (define total 0)
  (define i 0)
  (do (
       (i length (- i 1))
       (a (vector-ref X i)(+ a total)) ; potential problem area
       ((zero? i) total)
       )
    )
  )

Не могли бы вы посоветовать и) ошибка ii) логика алгоритма

Спасибо!

1 Ответ

1 голос
/ 12 декабря 2010

Я не могу сказать структуру вашей программы, потому что круглые скобки не совпадают, а отступы трудно читать, но я думаю, что вы не вводите лямбда-выражения, поэтому вместо возврата суммы вы возвращаетесделано с лямбдами, так как вы не оценивали их.

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