计划中的评估顺序

时间:2011-02-11 14:36:29

标签: scheme racket operator-precedence r6rs

这是有效的:

(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 个答案:

答案 0 :(得分:0)

代码是正确的。我用一些dummys替换了你的函数,它的评估很好:

(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)

问题必须出在您的图书馆代码或您使用它的方式中。计划评估工作正常。