我无法理解我在这里做错了什么。也许是一个错位的反引号。
球拍代码:
(需要数学/数组)(定义mask_cube (让([leng 5]) `(make-array#(,leng,leng)0)))我……
你不想要 eval 这里。相反,你引用太多;你的问题的简单解决方案是移动 ` 到适当的地方:
eval
`
(define mask_cube (let ([leng 5]) (make-array `#(,leng ,leng) 0)))
但是,如果你是初学者,我通常会避免引用;它比它需要的更复杂。只需使用 vector 而不是函数,这更容易理解:
vector
(define mask_cube (let ([leng 5]) (make-array (vector leng leng) 0)))
对于报价的深入处理(最后使用quasiquotation),请参阅 引号和列表有什么区别? 。
哇,我觉得自己很蠢。它总是一样的:评估什么只是一个符号列表。答案(见 eval ):
(define mask_cube (let ([leng 5]) (eval `(make-array #(,leng ,leng) 0))))
仍然可以使用更好的样式编码的其他答案,并希望将其修改为转换的函数/宏 np.zeros() 和 np.ones() 进入Lisp
np.zeros()
np.ones()