你如何表示矢量的元素是球拍中的函数/程序?
我认为它会是这样的:
#(+ -)
但是当我检索元素时,我会得到符号' +和' - 。
答案 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