> Lispハッカーたちは、強力なマクロシステムを使って、何十年も言語を自在に形作ってきたんだ。私は少しRacketのコードを書いたことがあるけど(https://github.com/evdubs?tab=repositories&q=&type=&language...)、まだマクロを書いたことがない。マクロが役立つと思ったのは一度だけで、クラスメンバーの定義を同じ行に型とデフォルト値を含めてマージすることだった。Racketは、はるかに大きな標準ライブラリと多くの素晴らしいユーザー提供ライブラリを持つSchemeなのに、「マクロで低レベルのツールを作れる」というScheme/Lispのマーケティングに悩まされるのはちょっと残念だよね。Racketの開発者は、すでに書かれていて標準ライブラリの一部になっているから、マクロを書く必要がないことが多いし。> でも、Parsecの成功はHackageに何百もの特注DSLをもたらしたんだ。解析用、XML用、PDF生成用のものがある。それぞれ全く異なっていて、それぞれ独自の学習曲線が必要なんだ。XMLを解析して、ウェブAPIからのJSONに基づいて変形させて、PDFに書き出すことを考えてみて。Lispの別の福音を伝えるチャンスを逃してるよね:s式。XMLとJSONは、使っているプログラミング言語にはネイティブではないデータ形式なんだ(例外はJavaScriptのJSON)。XMLやJSONよりも良いものは何か?s式だよ。Lispの開発者たちはXMLやJSONをどう扱ってるかって?s式に変換するんだ。データを定義する場合はどうなる?s式があるから、XMLやJSONに制限されず、データにソートされたマップを使ったり、適切な日付を使ったりできる。JSONのようにすべてを配列、ハッシュ、文字列、浮動小数点のバケツに収める必要はないんだ。Lispについて聞いたことがあって、「DSLを作ってより良いマクロを使える」っていうマーケティングに引いてしまったなら、RacketはJavaやC#のような大きな標準ライブラリを持つ言語に慣れた開発者にはずっと快適な環境だよ。