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

G41*_*143 4 racket

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

我认为它会是这样的:

#(+ -)
Run Code Online (Sandbox Code Playgroud)

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

Ren*_*nzo 6

原因是它#(是一种用于读取数组文字的特殊语法,而不是用于评估括号之间内容的运算符.从手册:

当读者遇到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)