function (#') について

「#' (シャープクォート)」が何なのか分からなくて調べたのでメモしておく。

  • 「#'」は「function」と同じ意味
    • 「'」を「quote」のかわりに使えるのといっしょ
  • 関数をクオートするときは「'」よりも「#'」を使う方がよいとされている
    • しかし「'」と「#'」は実装レベルでは同じもの
    • 違いは「byte compiler」がコンパイルするときに、匿名関数が「#'」でクオートされていれば、匿名関数の内部まで「byte compile」できること

「#'」でクオートされていなくても
「byte compiler」がそれが関数だと分かる場合もあるので、
「byte compiler」的には「'」と「#'」のどちらでもいいときもある。


でも自分や他人がソースを読むときに
パっと見て「あーこれは関数なのだな」と分かるのは「人間」的にうれしいはずなので
関数をクオートするときはなるべく「#'」を使おうと思う。

参考

Emacs Lisp