2011年7月5日火曜日

LispマクロとTemplate Haskellの違い


LispマクロとTemplate Haskellには違いがある。

LispのマクロはS式を変換する。一方、Template Haskellが変換するものはHaskellのAST(Abstract Syntax Tree)である。

従って、Template Haskellで変換できる式は、まずASTとして有効でなければならない。ASTとして有効な式でなければTemplate Haskellに渡せない。Lispの場合はS式でさえあれば良い。シンボルをただ並べたリストでも良い。

制限が小さい分、Lispマクロの方が強力だといえるだろう。



--

0 件のコメント: