21

スクラッチ/リバースエンジニアから実装するのに、どの正式なシステムがより興味深いかについてお聞きしたいと思います。

論理/宣言型プログラミングシステムの既存のオープンソースプロジェクトをいくつか調べました。私は自分の自由な時間に似たようなものを作るか、少なくとも実装の一般的な考え方を理解することにしました。

これらのシステムのいくつかが、論理とその計算モデルとの関係における現代の学術調査の表現力と簡潔さのほとんどを提供するならば、それは素晴らしいことです。

少なくとも概念レベルで何を勉強することをお勧めしますか?たとえば、Lambda-Prologは、特に高次の関係を可能にするため興味深いものですが、AFAIKは直観主義論理に基づいているため、排中律の原則がありません。それは一般的に私にとって不利です。

また、あまり人気がないが、より表現力豊かで強力な最新の論理プログラミングシステムについての提案を歓迎します。

4

4 に答える 4

18

Prologは、プログラミングに対する私の見方を変えた最初の言語でした。しかし、後で私はそれが私がそれを見たいほど高レベルではないことに気づきました。

カレー-ミュンスターCCだけを試してみましたが、やや不便でした。実際、この時点で、私はHaskellを無視するのをやめることにしました。

Mercuryには、Prologで見たかったものがたくさんあります。ルールのモードを区別する可能性について、私は本当に期待しています。Mercuryで書かれたプログラムは、コンパイラーに多くの最適化を行うように促すはずです(私は推測します)。

于 2010-06-02T09:30:40.190 に答える
10

12

それはラムダプロローグを大幅に一般化し、論理フレームワークとメタ論理フレームワークであり、論理プログラミング言語でもあります。計算だけでなく論理にも重点を置いた言語が必要な場合は、私が知っている中で最高の言語です。

于 2010-07-30T09:30:20.607 に答える
4

ロジックベースのシステムを拡張しようとすると、Prolog Cafeを選択します。これは、小さく、オープンソースで、標準に準拠しており、Javaベースのシステムに簡単に統合できるためです。

于 2010-07-18T22:57:55.180 に答える
2

私が受講したプログラミング言語コースの最後のプロジェクトでは、継続とマクロを使用して、SchemeにPrologエバリュエーターを埋め込む必要がありました。その結果、SchemeコードとPrologコードを自由に組み合わせることができ、Schemeで記述された任意の述語をPrologエンジンに渡すこともできました。

それは非常に有益な演習でした。コードの最初の12行(andおよびor)は、文字通り、記述して正しくなるまでに約6時間かかりました。これはほとんど検索ロジックであり、継続を使用して非常に簡潔に記述されています。残りはもう少し簡単に続きました。次に、統合アルゴリズムを追加すると、すべてが機能しました。

于 2010-06-04T19:50:44.970 に答える