setf中的f代表什么?

Gol*_*den 24 lisp common-lisp

LISP具有setf为变量赋值的功能.现在我一直想知道函数的名称:set部分很明显,但f后缀代表什么?

Pau*_*yot 33

F的实际含义经常被遗忘.根据一些消息来源,f后缀可能代表:

  • 字段(例如,参见此答案)
  • 表格(见各种教材和手册)

然而,根据Gabriel和Steele的Lisp演变,SETF来自Peter Deutsch的A Lisp Machine with Very Compact Programs(1973年出版),F代表功能.

在本文中,Peter Deutsch写道:

SET函数被扩展,以便如果第一个参数是列表(fn argl ... argn)而不是变量,则函数fn在"store"模式下使用arguments argl ... argn和newvalue(SET的第二个参数)调用.SETQ也以显而易见的方式扩展,但并不是特别有用.一个更有用的功能是(SETFQ (fn argl ... argn) newvalue)引用函数名称和评估一切.例如,这允许将RPLACA定义为(LAMBDA (X Y) (SETFQ (CAR X) Y)).

(强调我的)

加布里埃尔和斯蒂尔解释了这是如何成为SETF:

这个名字在Lisp-Machine Lisp中缩写为SETF.

  • 我使用信誉良好的来源纠正了答案.F代表功能,而不是形式或领域. (4认同)