【发布时间】:2011-02-11 14:36:28
【问题描述】:
这是有效的:
(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
当评估(cadar karaktersobjectenlijst) 时,如何让它使用值obj1?
【问题讨论】:
-
什么是
maak-object和positie? -
(define (maak-object positie blokkerend?breekbaar?water?) (vector object-tag positie blokkerend?breekbaar?water?))
-
(define (positie k) (cond ((karakter?k) (vector-ref k 6)) ((object?k) (vector-ref k 1))))
-
您能更具体地了解您正在编写的程序吗?这里有很多未定义的变量:
object-tag、karakter?、coord、karaktersenobjectenlijst。为它们提供看似合理的值并不会产生您所看到的结果。 -
这是什么方案系统?我最怀疑打印为“obj1”的值。此外,“cadar”将从 karaktersenobjectenlijst 的第一个元素中进行选择;如果它不是空的,那么你添加的东西没有任何区别。山姆是对的;这里有太多危险的东西,无法理解这个请求。
标签: scheme racket operator-precedence r6rs