Loading article…
Template Haskell(初期バージョンではTemplate Meta-Haskell )は、関数型 プログラミング言語 Haskellの実験的な言語拡張であり、Glasgow Haskell Compiler(GHC)バージョン6以降で実装されています。[1]
抽象構文木を操作し、結果をプログラムに「つなぎ合わせる」ことにより、コンパイル時の メタプログラミングと生成プログラミングが可能になります。抽象構文は通常の Haskellデータ型を使用して表現され、操作は通常の Haskell関数を使用して実行されます。
「準引用符」括弧[|と「」は、|]囲まれた式の抽象構文木を取得するために使用され、「スプライス」括弧と「$(」は、)抽象構文木をコードに変換するために使用されます。
GHC-6.10 以降、Template Haskell はユーザー定義の準引用符のサポートを提供します。これにより、ユーザーは任意の構文から Haskell コードを生成できるパーサーを作成できます。この構文はコンパイル時にも適用されます。たとえば、正規表現にカスタムの準引用符を使用すると、次のようになります。
digitsFollowedByLetters = [ $ re | \ d + \ s + | ]
例
一般的な慣用句は、式を準引用符で囲み、式に対して何らかの変換を実行し、その結果をプログラムに戻すことです。次のように記述できます。
結果= $ (変換[ |入力| ] )
参考文献
- ^ 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。
外部リンク
- Haskell.org テンプレート Haskell Wiki ページ
