EDSL
Embedded domain specific language
Haskellの文法で他の言語を記述できるしくみ
Haskell関係なくある概念かmrsekut.icon
メリット
何かしらのコード生成をしたいとき、例えばC言語を吐き出すDSLを作りたいときに、安易に思いつく方法は自作言語を定義して、そのparserを書いて、そのコード生成器を書いて、、という経路を辿るがそれは大変
そこでEDSLを使うことで、HaskellでC言語マクロを書くことができる
Haskellで書いた式をC言語にコンパイルできる
わざわざparserやコード生成器を書かなくていい
自作言語を定義するわけではなく、HaskellコードをCに変換するので、Haskellコードの正当性の評価にはHaskellコンパイラの恩恵を受けることができる
memo
HaskellでC言語マクロを書く
これが言語になる
実行するとC言語にコンパイルされる
書き心地はどっち似ている?
メリデメを知りたい
具体的な用途を知りたい
するためには何らかのライブラリが必要?
#??
tagless finalってなに?
タグレスにすると中間コードを介さないらしい
ほんとにマクロ書いている感じになるのかmrsekut.icon
Haskellは言語内DSLを書くのに優れている
参考
Haskell+タグレスな型付きDSLで楽々!C言語コード生成 - keigoiの日記
https://keigoi.hatenadiary.org/entry/20111206/haskell_tagless_dsl
https://wiki.haskell.org/Embedded_domain_specific_language