Я бы очень признателен, если кто-то может помочь в этом. Я на мгновение ударился головой, пытаясь заставить это работать. Я обыскал интернет и перечитал руководство, но я просто не понимаю.Схема: неправильный аргумент типа в позиции
guile << __EOF__
(define heading-list (list 'a 'b 'c)
)
(define (make-heading-list)
(let* ((mycond #t))
(if mycond
(set!
heading-list
(append (
heading-list
(list 'd)
)
)
)
(display 'false)
)
heading-list
)
)
(make-heading-list)
__EOF__
Когда я запускаю это, я получаю:
ERROR: In procedure setter:
ERROR: In procedure setter: Wrong type argument in position 1: (a b c)
Я знаю, что форматирование не является станд - Я починю его, когда он работает.
EDIT ----------------------------------------- Работает код (надеюсь, разумно отформатирован сейчас):
guile << __EOF__
(define heading-list (list 'a 'b 'c))
(define (make-heading-list)
(let* ((mycond #t))
(if mycond
(set!
heading-list
(append heading-list (list 'd)))
(display 'false))
heading-list))
(make-heading-list)
__EOF__
У вас есть дополнительный набор парсенов вокруг 'heading-list' в обоих местах. Не пиши свои парны; это затрудняет выявление таких проблем. Кроме того, в целом ваш код кажется странным в нескольких местах ... зачем связывать 'mycond' с' # t', а затем входить в него? Почему 'set!' Вместо того, чтобы просто возвращать список? –
Привет, Алексис. Спасибо за вашу помощь. Я удалил parens вокруг обоих заголовков в списке make-heading. Теперь получаем: «ОШИБКА: В процедуре (a b c): ОШИБКА: неправильный тип для применения: (a b c)« Я использую mycond, потому что это упрощенный тест того, что я действительно хочу сделать, и я хотел проверить if. Я использую набор! потому что я не мог заставить ничего работать. Предложения приветствуются - особенно пример кода! –
Не могли бы вы обновить свой вопрос с помощью обновленного кода? Думаю, это было бы полезно. –