В главе 3 Практически распространенной книги Lisp есть пример SQL-подобной функции select и where. Вот упрощенная версия:
(defun where (x)
#'(lambda (item)
(> item x)))
и он используется следующим образом:
(remove-if-not (where 2) (list 1 2 3 4))
Ранее в книге объясняется, что последовательность #'
используется для указания, что за ней следует имя функции, а не переменная, требующая оценки. Я не понимаю, зачем это нужно. Я попробовал реализовать функцию where
без нее, и она также работала:
(defun where (x)
(lambda (item)
(> item x)))
Я попробовал поиск по Google, и, как вы можете себе представить, с такой последовательностью символов это был не очень плодотворный поиск. И я не знаю названия этой вещи. Есть ли какая-то конкретная причина, по которой это необходимо в приведенном выше коде?