Genel sorun, yerleştirilmeden önce değerlendirilmeniz x
ve ihtiyaç duymanızdır . Alıntılanan listedeki sorun ( okuyucu sözdizimi ile birlikte ) bu , tartışmasını değerlendirmeyen özel bir formdur. Dokümanlara göre:y
somelist
'
quote
(quote ARG)
Değerlendirmeden, argümanı döndür. (quote x)
verim x
. Uyarı: quote
dönüş değerini oluşturmaz, sadece Lisp okuyucusu tarafından önceden oluşturulmuş değeri verir ...
Bu nedenle, ya yeniden sorgulamanız ya da argümanları değerlendiren bir işlevi kullanmanız gerekir .
Geri alma, geri alınan bir listenin öğelerini ,
sözdizimiyle seçici bir şekilde değerlendirmenize olanak sağlar :
(setq x "x-val" y "y-val" z "z-val" somelist nil)
'(x y z) ; => (x y z)
`(x ,y z) ; => (x "y-val" z)
(add-to-list 'somelist `(x y ,z)) ; => ((x y "z-val"))
Alternatif olarak, cons
(@tarsius'un cevabında önerdiği gibi) veya isteğe bağlı sayıda öğe için kullanabilirsiniz list
:
(add-to-list 'somelist (cons x y)) ; => (("x-val" . "y-val"))
(setq somelist nil) ; reset
(add-to-list 'somelist (list x y z)) ; => (("x-val" "y-val" "z-val"))
Hangisini kullanacağınız, elementlerle yapmanız gerekenlere bağlıdır.
`(,x . ,y)
.