¿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. de intercambio genérico dificultad
- 10. jQuery Intercambio de elementos
- 11. referencias variables en Lisp
- 12. ¿Cómo funciona el intercambio de variables XOR?
- 13. ¿Cómo funciona el intercambio de variables internamente?
- 14. Intercambio de endianness sin ntohs
- 15. ¿Qué es el intercambio implícito?
- 16. Intercambio de filas en JQuery
- 17. Intercambio atómico en GNU C++
- 18. Diferencia de intercambio y paginación
- 19. Intercambio de filas y columnas
- 20. Intercambio de tablas ms-sql
- 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. ¿Cuál es la diferencia entre Lisp-1 y Lisp-2?
- 26. Ayúdame a escribir mi LISP :) Entornos LISP, Ruby Hashes
- 27. Diferencia de estructura entre lisp común y emacs lisp
- 28. embellecedor de código fuente para lisp (Common Lisp, Scheme, Clojure)
- 29. Intercambio de variables dentro del método estático
- 30. Intercambio de bytes enteros en C++
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