これで a の値は (1 10 3) になります。 この setf は setq の拡張と見ることができ、置き換えることができます。setq では、 x が変数でしたが、 setf では、 (elt a 1) 全体が変数とみなされます。 マクロと特別形式 ところで、Emacs Lisp には、関数に類する機能として、マクロと特別形式(special form) があります。関数は実行時に評価されますが、マクロはコンパイル時に評価されて、式を出力します。また、実行時にはさらに式が評価されて結果を出力します。特別形式は、引数が評価されない場合があります。 たとえば setq は特別形式で、奇数番目の引数は評価されません。(詳細はEmacs Lisp リファレンス・マニュアル 9.2.7 参照) 一方、 setf はマクロです。式がどのようにマクロ展開されているかを確認するには、 macroex
![Emacs Lispの汎変数 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/f8dde6f6a70627037eed5ed4b5dc6f5e368625fa/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RW1hY3MlMjBMaXNwJUUzJTgxJUFFJUU2JUIxJThFJUU1JUE0JTg5JUU2JTk1JUIwJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz0xMzQ2MjUwNTlmODgwNTRiNDFkYjIwMjczYjEwMzhjNA%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBrYXdhYmF0YSU0MGdpdGh1YiZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NmRkZmE2ODBlYWZhNzkzZmQwNTIzZDE4NzVkODkxMDM%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3D3ca3d83edb2dbe5ce9297588ad4ffb05)