我不明白我在做什么错。也许放错了引号。
(require math/array)
(define mask_cube
(let ([leng 5])
`(make-array #(,leng ,leng) 0)))
np.zeros((5,5))
为什么逗号不像我想的那样工作?如果有解决问题的更优雅的方法,请告诉我。通常,我只想要我漂亮而简短的np.zeros()
函数
此外,如果我对反引号,逗号或球拍(或什至一般来说是Lisp)有一些误解,请告诉我。
答案 0 :(得分:3)
您不希望eval
在这里。相反,您引用的太多了。解决您的问题的简单方法是将`
向内移动到适当的位置:
(define mask_cube
(let ([leng 5])
(make-array `#(,leng ,leng) 0)))
但是,如果您是初学者,我通常会避免引用报价;它比需要的要复杂。只需使用vector
函数即可,它更容易理解:
(define mask_cube
(let ([leng 5])
(make-array (vector leng leng) 0)))
有关报价的详细信息(末尾带有半引号),请参见What is the difference between quote and list?。
答案 1 :(得分:-1)
哇,我感到愚蠢吗?总是一回事:被评估的内容与只是符号列表的内容。答案(请参见eval
)
(define mask_cube
(let ([leng 5])
(eval
`(make-array #(,leng ,leng) 0))))
仍然欢迎使用更好样式编码的其他答案,并希望将其修改为将np.zeros()
和np.ones()
转换为Lisp的函数/宏