Scheme 方案中的评价顺序

Scheme 方案中的评价顺序,scheme,racket,operator-precedence,r6rs,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)

这就是工作原理:

(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
>(位置(卡达尔卡拉克特森对象)
. . vector ref:应将类型作为第一个参数,
. .   给定:obj1;其他参数为:0

当计算
(cadar karaktersobjectenlijst)
时,如何使其使用值
obj1

代码是正确的。我用一些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)

问题一定出在您的库代码或您使用它的方式上。方案评估工作正常。

什么是
maak object
positie
?(定义(maak object positie blokkerend?breekbaar?water?)(向量对象标记positie blokkerend?breekbaar?water?)(定义(positie k)(cond((karakter?k)(向量引用k6))((对象?k)(向量引用k1)))你能更具体地描述一下你正在写的程序吗?这里有许多未定义的变量:
object tag
karakter?
coord
karaktersenobjectenlijst
。为他们提供看似合理的价值并不会产生你所看到的结果。这是什么方案体系?我最怀疑打印为“obj1”的值。此外,“cadar”将从KaraktersenoObjectEnlijst的第一个元素中进行选择;如果一开始它不是空的,那么你添加的东西就没有什么区别了。山姆是对的;这里有太多危险的信息,无法理解这个请求。