setf中的f代表什么?

时间:2014-05-22 13:24:52

标签: lisp common-lisp

LISP具有setf函数来为变量赋值。现在我一直想知道函数的名称:set部分是显而易见的,但f后缀代表什么?

1 个答案:

答案 0 :(得分:33)

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

  • 字段(例如参见此answer
  • 表格(如各种教材和手册所示)

然而,根据Gabriel和Steele的The Evolution of Lisp,SETF来自Peter Deutsch的{​​{3}}(1973年出版),F代表功能

在本文中,Peter Deutsch写道:

  

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

(强调我的)

Gabriel和Steele解释了这是如何成为SETF的:

  

此名称在Lisp-Machine Lisp中缩写为SETF。