内部DSL
Internal DSL
埋め込みDSLとも
既存のプログラミング言語をホストとしてその上に実装されるDSL
つまり内部DSLの処理系はホスト言語の処理系になる
ホスト言語のライブラリやフレームワークとして提供される
DSLのために新たにparserやcompilerを実装しないで良い
文法はホスト言語と同じ、という制約あり
シンタックスシュガー
フォーマット
AST変換
マクロ
例
Gradle
Vargrant
Ruby
仮想化開発環境構築
Gatling
Scala
負荷テスト
Apache Camel
Java
処理の連結
HaskellのFreeモナドとかもかな?
#??
文法はホスト言語に多少依存する?
文法などが依存するならわざわざ言語を作るメリットが感じられないのだが
普通の便利関数の組み合わせとはどう違うの?
ホスト言語との連携もできる?
haskell
https://haskell.jp/blog/posts/2019/hiw-copilot.html
https://logmi.jp/tech/articles/320396
http://proofcafe.org/~keigoi/2012Mar-haskelldsl.pdf
https://keigoi.hatenadiary.org/entry/20110808/1312803152
参考
http://bliki-ja.github.io/InternalDslStyle/