Apa perbedaan antara 'dan #' di depan simbol?


22

Saya sedikit baru untuk Emacs. Ketika melihat beberapa konfigurasi, saya menemukan ada dua jenis perintah di "add-hook".

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

dan

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

Ini telah membingungkan saya sejak lama dan saya tidak tahu cara mencari "# '" di google ...

Terima kasih.


2
Maaf, salah saya. Ditemukan jawabannya: stackoverflow.com/questions/2701698/…
X.Arthur


2
Duplikat di situs lain baik-baik saja. Ada satu di sini, yang hampir merupakan duplikat. emacs.stackexchange.com/q/3595/50
Malabarba

Jawaban:


21

Dalam Emacs Lisp, if fooadalah simbol, maka 'foodan #'foosepenuhnya sama. Bentuk terakhir (dengan #') lebih disukai ketika foosuatu fungsi, karena mendokumentasikan fakta bahwa ia dimaksudkan untuk berfungsi.

Oleh karena itu dua bentuk Anda sepenuhnya sama, dan yang satu #'lebih disukai.

Sunting : seperti yang ditunjukkan oleh Malabarba, ini tidak sepenuhnya benar: #'pada simbol akan menyebabkan byte-compiler mengeluarkan peringatan jika fungsi tidak didefinisikan.

(Perhatikan bahwa ini bukan kasus untuk lambda-bentuk, yang polos 'mencegah byte-compiler dari mengkompilasi bentuk lambda, seperti yang didokumentasikan di tempat lain . Perhatikan lebih lanjut bahwa ini juga tidak harus terjadi dalam dialek Lisp lain, misalnya dalam Lisp umum #'foomelakukan pengikatan awal.)


Benar tentang peringatan. Mengenai lambdas, #'perintahkan kompiler untuk mengkompilasi lambda, sebagai lawan dari kutipan polos, yang tidak. Saya telah memformulasikannya kembali dengan cara yang lebih mudah.
jch
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.