"Pascal J. Bourguignon" <
> Yliur <
yl...@free.fr> writes:
>
> > Pour étendre les capacités de setf, j'ai trouvé plusieurs méthodes :
> > - Les macros define-setf-expander et defsetf d'un côté, la
> > deuxième étant un moyen de traiter simplement les cas simples et la
> > première étant plus générique si j'ai bien compris ce que raconte
> > l'Hyperspec.
> > - Une méthode présentée dans Practical Common Lisp, avec cet
> > exemple : (defun (setf customer-name) (name account)
> > (setf (slot-value account 'customer-name) name))
>
>
>
> > Y a-t-il une différence entre ces deux méthodes ?
>
> Oui.
>
> Pour implementer une place ayant plusieurs valeurs, similaire à :
>
> (setf (values q r) (truncate n d))
>
> ou pour implémenter une place "inverse" comme:
>
> (setf (/ x 2) 4)
> (assert (= x 8))
>
> define-setf-expander est nécessaire.