Genel sorun, yerleştirilmeden önce değerlendirilmeniz xve 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:ysomelist'quote
(quote ARG)
Değerlendirmeden, argümanı döndür. (quote x)verim x. Uyarı: quotedö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).