Схема: неверный тип аргумента в позиции

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

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)

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

РЕДАКТИРОВАТЬ ----------------------------------------- Вот рабочий код (надеюсь, разумно отформатирован сейчас):

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__

1 ответ

Решение

heading-list это список. Вы используете это, как если бы это была процедура. (heading-list) означает "применить процедуру heading-list к нулю аргументов ". Отсюда сообщение об ошибке" неправильный тип для применения ".

Другие вопросы по тегам