球拍:相当于np.zeros((n, m))
racket: equivalent to np.zeros((n, m))
我不明白我在这里做错了什么。可能是放错地方的反引号。
球拍代码:
(require math/array)
(define mask_cube
(let ([leng 5])
`(make-array #(,leng ,leng) 0)))
我想让它做什么,写在python:
np.zeros((5,5))
为什么逗号没有像我认为的那样工作?如果有更优雅的方法来解决问题,请告诉我。大多数情况下,我只想要漂亮、简短的 np.zeros()
功能
此外,如果我对反引号、逗号或 racket(甚至一般的 Lisp)有什么基本的误解,请告诉我。
哇,我是不是觉得自己很傻。它始终是同一件事:评估的内容与仅是符号列表的内容。答案(见eval
):
(define mask_cube
(let ([leng 5])
(eval
`(make-array #(,leng ,leng) 0))))
仍然对其他编码风格更好的答案持开放态度,我希望将其修改为 function/macro,将 np.zeros()
和 np.ones()
翻译成 Lisp
你不想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)))
关于报价的深入处理(最后有准报价),请参阅。
我不明白我在这里做错了什么。可能是放错地方的反引号。
球拍代码:
(require math/array)
(define mask_cube
(let ([leng 5])
`(make-array #(,leng ,leng) 0)))
我想让它做什么,写在python:
np.zeros((5,5))
为什么逗号没有像我认为的那样工作?如果有更优雅的方法来解决问题,请告诉我。大多数情况下,我只想要漂亮、简短的 np.zeros()
功能
此外,如果我对反引号、逗号或 racket(甚至一般的 Lisp)有什么基本的误解,请告诉我。
哇,我是不是觉得自己很傻。它始终是同一件事:评估的内容与仅是符号列表的内容。答案(见eval
):
(define mask_cube
(let ([leng 5])
(eval
`(make-array #(,leng ,leng) 0))))
仍然对其他编码风格更好的答案持开放态度,我希望将其修改为 function/macro,将 np.zeros()
和 np.ones()
翻译成 Lisp
你不想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)))
关于报价的深入处理(最后有准报价),请参阅