开发者

Common Lisp: Why not the array literal evaluate arguments?

开发者 https://www.devze.com 2023-01-16 06:23 出处:网络
Why is it that the Common Lisp array syntax is not evaluating its arguments: (let ((a 1)) #2A((a 2) (3 4)))

Why is it that the Common Lisp array syntax is not evaluating its arguments:

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

I would have guessed it was #2A((1 2)开发者_Python百科 (3 4)). Is this because A is not available at reader time?


In short, yes.

#2A((A 2) (3 4)) is not an abbreviation ("syntactic sugar") for (make-array '(2 2) :initial-contents (list (list a 2) (list 3 4))). If anything, it could be rationalized as (make-array '(2 2) :initial-contents (quote ((A 2) (3 4)))), but this would be a bit misleading as the array construction already happens at read-time.

0

精彩评论

暂无评论...
验证码 换一张
取 消