В чем разница между FUNCALL и #'имя-функции в Common Lisp?

Я читаю книгу для домашнего задания и понимаю, что использование #' рассматривает переменную как функцию, а не как переменную. Но я немного туманно на FUNCALL. Я понимаю, что lisp делает объект из переменных, так что имя функции просто «указатель» (может быть, плохое слово, но, надеюсь, вы понимаете, что я имею в виду), и в этом случае вы используете #' для его вызова или funcall единственный способ вызвать их? бывший.

(defun plot (fn min max step)
(loop for i from min to max by step do
      (loop repeat (funcall fn i) do (format t "*"))
      (format t "~%")))

не мог бы я просто сделать:

(defun plot (fn min max step)
(loop for i from min to max by step do
      (loop repeat #'(fn i) do (format t "*"))
      (format t "~%")))

Думаю, моя путаница заключается в том, что именно содержится в именах функций. Когда я читал книгу, в ней говорилось, что значение переменной — это то, что будет объектом функции.

5
задан Bill the Lizard 19 December 2012 в 15:16
поделиться