你如何表示矢量的元素是球拍中的函数/程序?
我认为它会是这样的:
#(+ -)
Run Code Online (Sandbox Code Playgroud)
但是当我检索元素时,我会得到符号'+和' - .
原因是它#(是一种用于读取数组文字的特殊语法,而不是用于评估括号之间内容的运算符.从手册:
当读者遇到a
#(时#[,或者#{,它开始解析一个向量 ; 有关向量的信息,请参见向量 ...在读取语法模式中,向量元素的每个递归读取也处于读取语法模式,因此包装的向量元素也包装为语法对象,并且向量是不可变的.示例:
#(1 apple 3)读取等于(vector 1 'apple 3)
所以,你应该使用显式vector运算符:
(define a (vector + -))
((vector-ref a 0) 2 3) ; => 5
Run Code Online (Sandbox Code Playgroud)