RosettaCodeData/Task/Generic-swap/EchoLisp/generic-swap.echolisp
2016-12-05 23:44:36 +01:00

20 lines
430 B
Text

;; 1)
;; a macro will do it, as shown in Racket (same syntax)
(define-syntax-rule (swap a b)
(let ([tmp a])
(set! a b)
(set! b tmp)))
(define A 666)
(define B "simon")
(swap A B)
A → "simon"
B → 666
;; 2)
;; The list-swap! function allows to swap two items inside a list, regardless of their types
;; This physically alters the list
(define L ' ( 1 2 3 4 🎩 ))
(list-swap! L 1 ' 🎩 )
→ (🎩 2 3 4 1)