Gödel, Escher, Elisp:宏的奇妙之美
Gödel, Escher, Elisp: The Beauty of Macros

作为 Emacs 用户,你是否注意到在 Emacs Lisp 中,代码即数据?这种同像性(homoiconic)让程序与数据之间没有隔阂,而宏正是利用这一特性的利器。宏在编译期将代码转换为新代码,让你能像构建语言一样扩展 Emacs Lisp 的表达力。从 `when`、`unless` 到 `defun`,甚至 `use-package`,它们都是宏的杰作。本文将带你穿越 Hofstadter 的怪圈与 Escher 的版画,揭示宏如何模糊程序与数据的边界,让你真正理解“代码即数据”的深层含义。
在 Emacs Lisp 中,程序与数据是同一枚莫比乌斯带的两面。