Common Lisp:为什么数组文字不能评估参数?

时间:2010-09-14 12:21:17

标签: lisp common-lisp

为什么Common Lisp数组语法没有评估它的参数:

(let ((a 1)) #2A((a 2) (3 4)))
=> #2A((A 2) (3 4))

我猜这是#2A((1 2) (3 4))。这是因为A在读者时间不可用吗?

1 个答案:

答案 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)))),但这会有点误导,因为数组结构已经在读取时发生。