Я пытаюсь написать программу, которая добавит числа в список. Однако, когда я предоставляю ввод в виде списка, Scheme не дает мне выход.Схема, возвращающая неправильный тип, чтобы применить для ввода списка
Мой код выглядит следующим образом:
(define (sumlist lst)
(cond ((pair? lst) (+ (car lst) (sumlist(cdr lst))))))
Почему это происходит? Я правильно даю ввод, т. Е. Цитирую список.
Я даю вход следующим образом: (sumlist '(1 2 3))
EDIT: Я слегка изменил вопрос. Список не был указан в pair? 'lst
, и именно поэтому я получал сообщение об ошибке. Теперь я не получаю сообщение об ошибке. Однако я тоже не получаю никаких результатов.
EDIT2: Я не сортировал список в pair? lst
. Однако теперь это дает мне следующую ошибку: неправильный тип в arg2 # Я обновил код соответствующим образом.
Я не думаю, что вы понимаете, как приложение функции представлено в синтаксисе схемы. Это должно быть '(car lst)' и '(sumlist (cdr lst))'. –
'(пара? Lst)' выглядит подозрительно ... – leppie
@leppie Это тоже. Как ни странно, это было «(пара? Lst)», пока несколько минут назад - ОР отредактировал вопрос. –