为什么Common Lisp数组语法没有评估它的参数:
(let ((a 1)) #2A((a 2) (3 4)))
=> #2A((A 2) (3 4))
Run Code Online (Sandbox Code Playgroud)
我猜对了#2A((1 2) (3 4)).这是因为A在读者时间不可用吗?
简而言之,是的.
#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)))),但这会有点误导,因为阵列结构已经在读取时发生.