ウェルプロダクションシステム(ルールシステム)は、計算への4つの一般的なアプローチ(チューリングマシン、教会の再帰関数、ポストプロダクションシステム、およびマルコフアルゴリズム[およびさらにいくつかがそのリストに追加されています])の1つであり、多かれ少なかれこれらのそれぞれの実現があります。命令型プログラミング、関数型プログラミング、ルールベースのプログラミング-私が知る限り、マルコフアルゴリズムには独立した実装がありません。これらはすべてチューリングと同等です。
したがって、ルールベースのプログラミングを使用して、何でも書くことができます。また、初期の数学/記号操作プログラムは、問題が十分に理解されるまで、一般にルールベースのプログラミングを使用していました(その後、アプローチは必須または制約プログラミングに変更されました-MACSYMAを参照してください-うーんMACSYMAはLispで書かれているので、おそらく私は別のプログラムを念頭に置いていますあるいは、おそらく彼らはもともとこのためにLispにルールシステムを実装していました)。
マトリックス操作を実行するルールシステムを簡単に作成できます。論理サポートに応じてトレースを保持し、ソリューションに貢献した実際に実行されたルールを記録できます(実行されたルールの中には、結局ソリューションに直接貢献しないものもあります)。次に、すべてのルールについて、中間言語として出力される一連のC ++命令(これらは「完全」である必要はありません。これらは、半実行可能要件のように機能します)へのマッピングがあります。次に、それがパーサーによって読み取られ、必要な入力データと必要なあらゆる種類の修正にリンクされます。関数型コードを生成する方が簡単な場合があります。たとえば、修正後、関数型ソースの出力コードをより簡単に最適化できます。
そうは言っても、他の寄稿者はドメイン固有言語アプローチの概要を説明しており、それはTEDの人々も行ったことです(私の提案は、ルールを使用するだけです)。