LISP имеет функцию setf для назначения значения переменной. Теперь я задаюсь вопросом о имени функции: часть set очевидна, но что означает суффикс f для?
Что означает f в setf?
Ответ 1
Фактическое значение F часто забывается. Согласно некоторым источникам, суффикс f может означать:
- Поле (см., например, этот ответ)
 - Форма (как видно из различных учебных материалов и руководств)
 
Однако, согласно Габриэлю и Стилу Эволюция Lisp, SETF происходит от Peter Deutsch A Lisp Машина с очень компактными программами (опубликовано в 1973), а F обозначает функцию.
В этой статье Питер Дойч писал:
Функция SET расширяется так, что если первый аргумент представляет собой список
(fn argl ... argn), а не переменную, функция fn вызывается в режиме "store" с аргументамиargl ... argnи newvalue (второй аргумент SET). SETQ также распространен очевидным образом, но не особенно полезен. Более полезной функцией является(SETFQ (fn argl ... argn) newvalue), которая цитирует имя функции и оценивает все остальное. Это позволяет RPLACA, например, быть определена как(LAMBDA (X Y) (SETFQ (CAR X) Y)).
(акцент мой)
Габриэль и Стил объясняют, как это стало SETF:
Это имя было сокращено до SETF в Lisp -Machine Lisp.