#'fは(function f)と等価.
(funcall #'f) == (f)
関数オブジェクトを渡す
高階関数などに関数オブジェクトを渡したいときは#'を使う
e.g. (mapcar #'1+ '(1 2 3)) => (2 3 4)
関数オブジェクトはシンボルの値フィールドに入れられて渡ってくる
code: function-object-as-value
(defun double (x) (* 2 x))
(defun twice (f x) (f (f x))) ;; Does not work
(defun twice (f x) (funcall f (funcall f x))) ;; Does work -- fの値フィールドに関数オブジェクトが入っている
(defun twice (f x) (funcall #'f (funcall #'f x))) ;; Does not work -- fの関数フィールドは空