「外部DSL × 規約に委ねる」が空席なのは淘汰圧の結果である
記述言語と記述自由度の所在の2×2で、「外部DSL × 規約に委ねる」— 動的なsourceと任意関数を持つ専用DSL — に該当するツールがない。これは偶然の空白ではなく淘汰圧の結果である。
論理はこうなる。専用文法を作っておきながら任意の動的選択を許すなら、汎用言語を使う方が経済的である。外部DSLを作るコスト(parser、evaluator、LSP、エコシステムの不在)を払う見返りが「文法レベルで望ましくない書き方を禁止できる」ことなのだから、それを放棄した外部DSLには存在理由が残らない。だから作られても生き残らない。
構成記述系DSL 11個への検証はこの仮説を補強する。この象限はほぼ空で、Nickelが部分的に近い(3自由度のうち2つが規約寄り)だけである。そのNickelも実装切替(import path)は依然として言語が決める。「外部DSLを作っておきながら3自由度すべてを規約に委ねる」DSLは、11個の中には存在しない。
この空席は、隣の空席(「汎用言語 × 言語が決める」)とは性質が違う点に注意が要る。こちらは経済的に成立しないから空いているのに対し、あちらは技術的コストが高いから空いていると説明される。前者は設計余地が残っているという話にはならない。