在 CL 中,我们有
incf
和 setf
命令式函数。 方案使用感叹号(例如 set!
、vector-set!
等)但是 CL 程序员使用什么约定(如果有的话)?
没有共同的约定。 Google Common Lisp Style Guide(一种有用的 CL 风格资源)对此没有任何说明。
Common Lisp 确实有一个约定,即在库函数的某些变体前面加上
n
来修改其参数,例如 nconc、nbutlast、nreverse、nsubstitute 等。这些函数被理解为“nonconsing”,因为他们不修改他们的列表参数。将其作为惯例可能是有意义的,并且会被普遍理解。
您可以使用感叹号,这可能会很清楚,但有些人会反对这种做法。
!
字符是 Common Lisp 标准保留给程序员的。然而,这可能会困扰您,例如,如果您使用的库使用 !
来定义读取器宏(这是保留此字符和其他几个字符的初衷)。