function cell
emacsEmacsのシンボルは、通常の値を保持する場所とは別に、function cell
という場所を持っている。
そして、リストを評価する際に、「先頭がシンボルならfunction cellを確認し、中身を関数として実行する」という動作をする。
function-cell
に値を入れるにはfset
を使う。
値を取得するには、symbol-function
を使う。
(fset 'hotoku '(lambda () (message "hotoku")))
;; => (lambda nil (message "hotoku"))
(hotoku)
;; => "hotoku"
(symbol-function 'hotoku)
;; => (lambda nil (message "hotoku"))
fset
は、値が関数かどうかは確認しないので、どんな値でも入れようと思えば入れられる。