เครื่องหมายจุลภาคถูกใช้ในบริบทของรายการbackquote (aka quasiquoted) ซึ่งช่วยให้คุณสามารถประเมินบางส่วนของรายการที่เลือก ดูเพิ่มเติมที่เธรดนี้สำหรับตัวอย่างของการใช้สำหรับ backquoting
ตัวอย่างง่ายๆสองตัวอย่าง:
(setq a "a's value" b "b's value" c "c's value")
'(a b c) ; => (a b c)
`(,a b ,c) ; => ("a's value" b "c's value")
เครื่องหมายจุลภาคที่คุณอ้างถึงอยู่ในนิยามแมโครซึ่งในทางกลับกันก็ใช้ backquote progn
:
(defmacro add-annoying-arrows-advice (cmd alternatives)
`(progn
(add-to-list 'annoying-commands (quote ,cmd))
(put (quote ,cmd) 'aa--alts ,alternatives)
(defadvice ,cmd (before annoying-arrows activate)
(when annoying-arrows-mode
(aa--maybe-complain (quote ,cmd))))))
,cmd
ภายใน backquote ช่วยให้คุณสามารถใส่ค่าของในสถานที่มากกว่าสัญลักษณ์cmd
cmd
progn
หมายความว่าคุณต้องใส่เครื่องหมายจุลภาคต่อหน้าสิ่งที่คุณต้องการประเมินไม่ว่ามันจะซ้อนอยู่ไกลแค่ไหน? (,cmd
อยู่ในรายการอื่นไม่ใช่ภายในโดยตรง(progn)
)