在Scheme中获取vector中的第一个元素

时间:2012-06-22 20:21:30

标签: arrays vector scheme

假设我在Scheme中创建了一个向量/数组:

(let* ((x #(1 2 3)))
  (list-ref x 0)) ; returns error 

我可以使用哪种语法或函数代替list {ref获取1

编辑:我正在使用带有GIMP 2.8的Script-Fu,其中array-ref似乎不起作用。

2 个答案:

答案 0 :(得分:7)

表达式(define v #(1 2 3))是创建新向量的简写,在标准Scheme中它等同于:

(define v (list->vector '(1 2 3)))

或者这个:

(define v (make-vector 3))
(vector-set! v 0 1)
(vector-set! v 1 2)
(vector-set! v 2 3)

一旦创建了一个向量(使用任何上述过程),访问向量中元素的正确方法是调用vector-ref过程 - 显然,因为它是向量而不是元素的列表

(vector-ref v 0)

在上一个表达式中,v是我们要检索其元素的向量和0索引。请查看documentation以获取有关上述程序的更详细说明。

答案 1 :(得分:4)

您可以将vector-ref用于此目的。例如:

(vector-ref x 0)

Here是关于向量的R 5 RS规范部分的链接,它提供了更多信息。