哥德尔、埃舍尔与 Elisp:宏之美
来源:chiply.dev — 2026-08-04
📋 概述
作者借 Hofstadter 与 Escher 的意象,为 Emacs Lisp 的宏大唱赞歌。核心是「同像性」(homoiconic):Elisp 的源码本身就是它的数据结构,一个引号就能让程序变成可检视、可变换、可重建的数据,一次函数调用又让数据变回程序,恰如埃舍尔莫比乌斯环的两面实为同一表面。宏接收的是调用点的原始代码并返回新代码,在程序运行前的展开期执行——作者用 quasiquotation 重实现了 unless 作为最小示例,并展示如何用 macroexpand、emacs-lisp-macroexpand 与 macrostep 等工具看清宏的魔法。
🔑 核心要点
- 同像性是核心:Elisp 的程序即数据结构,引号分隔两者
- 程序与数据如同埃舍尔莫比乌斯环的两面一面,没有隔墙
- 宏接收调用点原始代码并返回新代码,在运行前展开期执行
- 用 quasiquotation 的 `, ,@ 重实现 unless 作最小示例,可宏展开检视
- macroexpand 与 macrostep 等工具让看穿魔法成为可能
💡 金句
程序与数据,是 Elisp 同像性莫比乌斯环的两面——两个侧面,实为同一连续曲面。
👍 0
👎 0
← 返回 Lobsters 首页