2009-02-09 6 views

Antwort

1

auch:

(let ((ab) (ba)) ...)

+0

, die nicht die Werte Variablen nicht ändert, es schafft nur neue lexikalische Bindungen. –

+2

@ dmitry-vk: Das ist oft alles, was Sie brauchen. Es hängt natürlich davon ab, was du tust. – khedron

1

Eine weitere Alternative, "parallel setf":

(psetf abba)

+3

Ein Unterschied zwischen 'rotatef' und' psetf' besteht darin, dass, wenn 'a' und' b' wirklich kompliziertere Formen sind,'psetf' alle Unterformulare zweimal auswertet, aber 'rotatef' wird sie nur einmal auswerten, was das ist man würde normalerweise wollen. –

-3

Eher grauenhafte Methode und es funktioniert nur für numerische Werte, aber es ist allgemeiner und nicht Syntax abhängig:

a = a^b

b = a^b

a = a^b

Unter der Annahme, dass A und B vor zugewiesen wurden, die^bedeutet logisch exklusive Alternative.

0

Noch ein anderer Ansatz:

(setf (values a b) (values b a))