LispマクロとTemplate Haskellには違いがある。
LispのマクロはS式を変換する。一方、Template Haskellが変換するものはHaskellのAST(Abstract Syntax Tree)である。
従って、Template Haskellで変換できる式は、まずASTとして有効でなければならない。ASTとして有効な式でなければTemplate Haskellに渡せない。Lispの場合はS式でさえあれば良い。シンボルをただ並べたリストでも良い。
制限が小さい分、Lispマクロの方が強力だといえるだろう。
--
0 件のコメント:
コメントを投稿