Lispでswap
- id:squall_kt:20060619
Lispは詳しくないのだけど、symbol使えば普通にかけるのではなかろうか。
(defun swap (a b) (let ((c (symbol-value a)) (d (symbol-value b))) (list (set a d) (set b c)))) (setq x 10 y 20) (list x y) => (10 20) (swap 'x 'y) => (20 10) (list x y) => (20 10)
まぁ、Common Lispはレキシカルスコープを採用しているので、スペシャル変数以外はうまく動かないのだけれど。逆に Emacs Lispはダイナミックスコープだから大丈夫だったり。