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