久しぶりにHaskellを勉強した。 せっかくなのでだらだらと。 はじめに Template Haskell というものを勉強してみた。 そういうわけで、資料を探してみたのだが、 日本語の資料は見事なまでに皆無だったので、 (Haskellで、しかも試験的な機能だから止む無しか) 英語の論文を読むことになった。 10ページほど読むのに3日かかったけど…。 Template Haskell とは…? 大雑把に言うとコンパイル時にプログラムを生成するためのもののようである。 概要 コンパイル時に指定した式を実行させ、その値をコードの中に展開させることが出来る。 展開できる式の値は"プログラム式"等の型をもつ。 要するに、任意の方法で構文木を組み立てて、それを実行することが出来ると。 大雑把なアイデア 構文木はExpQという型を持つ。 Template Haskell においてはこのExpQ型の