使用 Common Lisp 进行开发时,我们有三种可能性来定义新的setf
形式:
我们可以定义一个函数,其名称是两个符号的列表,第一个是
setf
,例如(defun (setf some-observable) (…))
。我们可以使用 的缩写形式
defsetf
。我们可以使用 的长形式
defsetf
。我们可以使用
define-setf-expander
.
我不确定每种可能性的正确或预期用例是什么。
对这个问题的回答可以暗示最通用的解决方案,并概述其他解决方案优于其他解决方案的上下文。