テンプレートHaskell

テンプレートHaskell(初期バージョンではテンプレートMeta-Haskell )は、関数型プログラミング言語Haskellの実験 的な言語拡張であり、グラスゴーHaskellコンパイラ(GHC)バージョン6以降に実装されています。[ 1 ]

抽象構文木を操作し、その結果をプログラムに「スプライシング」することで、コンパイル時のメタプログラミング生成プログラミングが可能になります。抽象構文は通常のHaskellデータ型で表現され、操作は通常のHaskell関数で実行されます。

準引用符」括弧[|と は、|]囲まれた式の抽象構文ツリーを取得するために使用され、「スプライス」括弧$(と は、)抽象構文ツリーからコードに変換するために使用されます。

GHC-6.10以降、Template Haskellはユーザー定義の準クォータをサポートしています。これにより、ユーザーは任意の構文からHaskellコードを生成するパーサを作成できます。この構文はコンパイル時にも適用されます。例えば、正規表現にカスタムの準クォータを使用するには、次のように記述します。

digitsFollowedByLetters = [ $ re | \ d + \ s + | ]

よくある慣用句として、式を準引用符で囲み、式に何らかの変換を施し、その結果をプログラムに組み込むというものがあります。次のように書くことができます

結果= $ (変換[ |入力| ] )

参考文献

  1. ^ Sheard, Tim; Jones, Simon Peyton (2002年10月3日). 「Haskellのためのテンプレートメタプログラミング」 . 2002 ACM SIGPLAN Haskellワークショップ議事録. Association for Computing Machinery. pp.  1– 16. doi : 10.1145/581690.581691 . ISBN 1581136056. S2CID  6096655 .