; parallel assignment
(define-syntax pset!
(syntax-rules ()
[(_ [x e] ...)
(for-each
(lambda (f v) (f v))
(list (lambda (t) (set! x t)) ...)
(list e ...))]))
(define a 1) (define b 2) (define c 3)
(display (list a b c)) (newline)
(pset! (a b) (b c) (c a))
(display (list a b c)) (newline)
OyBwYXJhbGxlbCBhc3NpZ25tZW50CgooZGVmaW5lLXN5bnRheCBwc2V0IQogIChzeW50YXgtcnVsZXMgKCkKICAgIFsoXyBbeCBlXSAuLi4pCiAgICAgKGZvci1lYWNoCiAgICAgICAobGFtYmRhIChmIHYpIChmIHYpKQogICAgICAgKGxpc3QgKGxhbWJkYSAodCkgKHNldCEgeCB0KSkgLi4uKQogICAgICAgKGxpc3QgZSAuLi4pKV0pKQoKKGRlZmluZSBhIDEpIChkZWZpbmUgYiAyKSAoZGVmaW5lIGMgMykKKGRpc3BsYXkgKGxpc3QgYSBiIGMpKSAobmV3bGluZSkKKHBzZXQhIChhIGIpIChiIGMpIChjIGEpKQooZGlzcGxheSAobGlzdCBhIGIgYykpIChuZXdsaW5lKQ==