SETF is a macro which expands to the correct procedure for setting a place. There must be a valid setf expansion for it to work. Expansions for functions are not automatically generated, since that would not be correct in the majority of cases. You can create your own expander for functions in a number of ways, the simplest of which is DEFUNin a (setf ...) function, like this:
- Code: Select all
(defun (setf proba1) (new-value list) (setf (first (second list)) new-value))
Also, you have created a special variable with the same name as a function argument. You should never do that, since that reacts in ways which are often confusing, which is a reason for the convention of naming special variables with symbol names surrounded by stars.