3
LISPのマクロは、DSLを作成するRubyの「能力」よりも優れているのはどの領域ですか
Rubyを輝かせるものの1つは、ドメイン固有の言語をより良く作成する機能です。 シナトラ Rspec レーキ Ruby on RailsのActiveRecord マクロを介してLISPでこれらのライブラリを複製できますが、Rubyの実装はよりエレガントだと思います。それでも、LISPのマクロはRubyのマクロよりも優れている場合があると思いますが、マクロは考えられませんでした。 それでは、LISPのマクロは、DSLを作成するRubyの「能力」よりも優れているのはどの領域ですか。 更新 現代のプログラミング言語がLISPの特異点に近づいているので、私はこれを尋ねました。 Cはマクロ展開プリプロセッサを取得しましたが、非常に原始的でエラーが発生しやすい C#には属性がありますが、これは読み取り専用であり、リフレクションによって公開されます Pythonは、関数(およびv 3.0のクラス)の動作を変更できるデコレーターを追加しましたが、かなり制限されています。 気をつければエレガントなDSLを作成するRuby TMTOWTDIですが、Rubyの方法です。 LISPのマクロは特別な場合にのみ適用でき、他のプログラミング言語機能はソフトウェア開発の今日の課題に対応するために抽象化を高めるのに十分強力であると思いました。