« Home

Macro system [cs-0005]

雖然 C 的 preprocessor 也被稱為 macro,但跟 LISP、Elixir、Julia 比起來就差很多的原因是

  1. C 對語法的原始位置放棄追蹤
  2. C 對 macro 的輸入跟輸出都沒有基本的檢查,也沒辦法對不同輸入做出反應

而常見的 LISP macro 過程則是:

  1. reader: TEXT -> S-expression
  2. 使用者定義的 macro: S-expression -> S-expression
  3. expander: S-expression -> LISP