Порядок оценки в схеме
Вот что работает:
(define obj1 (maak-object (coord 1 1) #f #f #t))
(set! karaktersenobjectenlijst (append karaktersenobjectenlijst
(list (list 'object obj1)))))
> (cadar karaktersenobjectenlijst)
obj1
> (positie obj1)
{1 . 1}
Это не работает:
> (positie (cadar karaktersenobjectenlijst))
. . vector-ref: expects type <vector> as 1st argument,
. . given: obj1; other arguments were: 0
Как я могу заставить это использовать значение obj1
когда (cadar karaktersobjectenlijst)
оценивается?
1 ответ
Код правильный. Я заменил ваши функции на некоторые пустышки, и это хорошо оценивается:
(define coord cons)
(define maak-object list)
(define positie car)
(define obj1 (maak-object (coord 1 1) #f #f #t))
(define karaktersenobjectenlijst '())
(set! karaktersenobjectenlijst (append karaktersenobjectenlijst
(list (list 'object obj1))))
(cadar karaktersenobjectenlijst)
(positie obj1) #-> (1 . 1)
(positie (cadar karaktersenobjectenlijst)) #-> (1 . 1)
Проблема должна быть в коде вашей библиотеки или в том, как вы ее используете. Схема оценки отлично работает.