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.