为什么Common Lisp数组语法没有评估它的参数:
(let ((a 1)) #2A((a 2) (3 4)))
=> #2A((A 2) (3 4))
我猜这是#2A((1 2) (3 4))
。这是因为A
在读者时间不可用吗?
答案 0 :(得分:5)
简而言之,是的。
#2A((A 2) (3 4))
不是(make-array '(2 2) :initial-contents (list (list a 2) (list 3 4)))
的缩写(“语法糖”)。如果有的话,它可以合理化为(make-array '(2 2) :initial-contents (quote ((A 2) (3 4))))
,但这会有点误导,因为数组结构已经在读取时发生。