When developing with Common Lisp, we have three possibilities to define new setf-forms:
We can define a function whose name is a list of two symbols, the first one being
setf, e.g.(defun (setf some-observable) (…)).We can use the short form of
defsetf.We can use the long form of
defsetf.We can use
define-setf-expander.
I am not sure what is the right or intended use-case for each of these possibilities.
A response to this question could hint at the most generic solution and outline contexts where other solutions are superior.