¿Cómo puedo intercambiar dos variables en LISP sin utilizar una tercera variable?LISP intercambio variable
7
A
Respuesta
25
(rotatef a b)
1
también:
(let ((ab) (BA)) ...)
1
Otra alternativa, "setf paralelo":
(psetf Abba)
+3
Una diferencia entre 'rotatef' y' psetf' es que si 'a' y' b' son formas realmente más complicadas, entonces 'psetf' evaluará los subformularios dos veces, pero' rotatef' los evaluará solo una vez, que es lo que uno normalmente querría. –
-3
Método bastante espantoso y funciona solo para valores numéricos, pero es más general y no depende de la sintaxis:
a = a^b
b = a^b
a = a^b
Suponiendo que A y B fueron asignados antes, el^medios alternativos exclusivo lógico.
0
Sin embargo, otro enfoque:
(setf (values a b) (values b a))
Cuestiones relacionadas
- 1. problemas variable en Lisp
- 2. Emacs Lisp: evaluar la variable en alist
- 3. Estilo Lisp: setq vs. setf
- 4. Intercambio de variable con y sin variable auxiliar, ¿cuál es más rápido?
- 5. Inspeccionar una variable en el lisp depurador SLIME
- 6. ¿Cómo funciona mi LISP como una variable independiente?
- 7. una pregunta sobre bind variable en Common Lisp
- 8. Common Lisp a Lisp-n?
- 9. jQuery Intercambio de elementos
- 10. de intercambio genérico dificultad
- 11. referencias variables en Lisp
- 12. ¿Cómo funciona el intercambio de variables internamente?
- 13. ¿Cómo funciona el intercambio de variables XOR?
- 14. Intercambio de endianness sin ntohs
- 15. Intercambio de filas en JQuery
- 16. Diferencia de intercambio y paginación
- 17. Intercambio de tablas ms-sql
- 18. Intercambio de filas y columnas
- 19. Intercambio atómico en GNU C++
- 20. ¿Qué es el intercambio implícito?
- 21. Lisp Ejecutable
- 22. ¿Por qué no existe un operador de intercambio/intercambio en lenguaje imperativo o OO como C/C++/C#/Java ...?
- 23. Refinamiento de función lisp
- 24. ¿Qué hace | 5E | significa en Common Lisp?
- 25. Ayúdame a escribir mi LISP :) Entornos LISP, Ruby Hashes
- 26. embellecedor de código fuente para lisp (Common Lisp, Scheme, Clojure)
- 27. ¿Cuál es la diferencia entre Lisp-1 y Lisp-2?
- 28. Diferencia de estructura entre lisp común y emacs lisp
- 29. En Emacs Lisp, ¿cómo puedo verificar si una variable está definida?
- 30. Crear un nombre de variable a partir de una cadena en Lisp
que no cambia valores de las variables, sólo crea nuevos enlaces léxicos. –
@ dmitry-vk: Eso es todo lo que necesitas. Depende de lo que estás haciendo, por supuesto. – khedron