20 lines
430 B
Text
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)
|