作为球拍中矢量元素的功能

时间:2016-01-19 06:43:34

标签: racket

你如何表示矢量的元素是球拍中的函数/程序?

我认为它会是这样的:

#(+ -)

但是当我检索元素时,我会得到符号' +和' - 。

1 个答案:

答案 0 :(得分:6)

原因是#(是用于读取数组文字的特殊语法,而不是用于评估括号之间内容的运算符。来自manual

  

当读者遇到#(#[#{时,它会开始解析vector;有关向量的信息,请参阅Vectors。   ...   在read-syntax mode中,向量元素的每个递归读取也处于read-syntax模式,因此包装的向量元素也被包装为语法对象,并且向量是不可变的。

     

示例:#(1 apple 3)读取等于(vector 1 'apple 3)

因此,您应该使用显式vector运算符:

(define a (vector + -))

((vector-ref a 0) 2 3)  ; => 5