Dlaczego jest to, że wspólna tablica składnia Lisp nie ocenia swoje argumenty:Common Lisp: Dlaczego nie literalna wartość argumentów?
(let ((a 1)) #2A((a 2) (3 4)))
=> #2A((A 2) (3 4))
bym nie zgadł, że to #2A((1 2) (3 4))
. Czy to dlatego, że A
nie jest dostępny w czasie odczytu?
Czy spodziewałbyś się, że lista literalna ''((a 3) (3 4)) zostanie oceniona? – kwatford
Czy ''((a 2) (3 4))' jest literałem? Myślałem, że to "cytat" i "((a 2) (3 4))" był dosłowny. –
'' 'to tylko makro czytnika dla' quote'. Zatem '' ((a 2) (3 4)) 'jest po prostu' (quote ((a 2) (3 4))) '. W kodzie źródłowym dla wspólnego programu seplencyjnego, cytowana lista jest literałem listy. Nagie listy reprezentują kod programu, a nie jego dane. Na początku jest trochę mylące, ale później będzie miało sens. – kwatford