อะไรคือความแตกต่างระหว่าง 'และ #' ที่ด้านหน้าของสัญลักษณ์?


22

ฉันใหม่สำหรับ Emacs นิดหน่อย เมื่อดูการกำหนดค่าบางอย่างฉันพบว่ามีคำสั่งสองประเภทใน "add-hook"

(add-hook 'LaTeX-mode-hook #'LaTeX-math-mode)

และ

(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)

สิ่งนี้ทำให้ฉันสับสนเป็นเวลานานและฉันไม่รู้วิธีค้นหา "#" "ใน google ...

ขอบคุณ


2
ขอโทษฉันไม่ดี พบคำตอบ: stackoverflow.com/questions/2701698/…
X.Arthur

ดูเพิ่มเติมที่emacswiki.org/emacs/EmacsSymbolNotation
xuchunyang

2
รายการที่ซ้ำกันในเว็บไซต์อื่นนั้นใช้ได้ แม้ว่าจะมีหนึ่งที่นี่ซึ่งเกือบจะซ้ำกัน emacs.stackexchange.com/q/3595/50
Malabarba

คำตอบ:


21

ใน Emacs Lisp หากfooเป็นสัญลักษณ์แล้ว'fooและ#'fooจะเทียบเท่าอย่างสมบูรณ์ แบบฟอร์มหลัง (พร้อม#') เป็นที่ต้องการเมื่อfooเป็นฟังก์ชั่นเนื่องจากเป็นเอกสารข้อเท็จจริงที่ว่ามันตั้งใจที่จะเรียกว่า

ทั้งสองรูปแบบของคุณมีความสมบูรณ์เทียบเท่าและ#'เป็นที่ต้องการด้วย

แก้ไข : ดังที่ Malabarba ชี้ว่านี่ไม่เป็นความจริงเลย: #'บนสัญลักษณ์จะทำให้คอมไพเลอร์ไบต์ส่งคำเตือนหากไม่ได้กำหนดฟังก์ชันไว้

(โปรดสังเกตว่านี่ไม่ใช่กรณีของแลมบ์ดา - แบบฟอร์มที่'ป้องกันไม่ให้คอมไพเลอร์ไบต์ - รวบรวมคอมไพล์แลมบ์ดา - แบบฟอร์มเอกสารอื่นหมายเหตุเพิ่มเติมว่านี่ไม่จำเป็นต้องเป็นกรณีในภาษาอื่น ๆ เช่นเสียงกระเพื่อมใน Common LISP #'fooดำเนินการผูกต้น)


ถูกต้องเกี่ยวกับคำเตือน สำหรับ#'แลมบ์ดาสั่งให้คอมไพเลอร์รวบรวมแลมบ์ดาซึ่งตรงข้ามกับข้อความธรรมดาที่ไม่มี ฉันปรับรูปแบบใหม่อย่างชัดเจนกว่าเดิม
jch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.