問題タブ [logic-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
functional-programming - ロジック プログラミングの最適な用途は何ですか?
ロジック プログラミングとは、宣言型プログラミング言語のサブパラダイムを意味します。この質問を「if-then-else で解決できる問題は何ですか?」と混同しないでください。
Prolog のような言語は非常に魅力的であり、学習のために学習する価値はありますが、現実世界の問題のどのクラスがそのような言語で最もよく表現され、解決されるのか疑問に思う必要があります。もっと良い言語はありますか?論理プログラミングは、より流行のプログラミング言語で別の名前で存在しますか? 答えの冷笑的なバージョンはPython Paradoxの変形ですか?
programming-languages - なぜ論理プログラミングがうまくいかなかったのですか?
時間が経つにつれて、関数型プログラミングが他のプログラミング言語により多くの影響を及ぼしているように見えます。私は私のAIクラスでPrologを始めていますが、AI以外の分野でのプログラミングを容易にするものがいくつかあるようです。私の質問はこれです:なぜ論理プログラミングが同じように普及しなかったのですか?
このトピックでは、論理プログラミングは有用であるが、そのように証明されなければならないという一般的なコンセンサスに達したようです。役に立たないと思われる理由はありますか?
更新:おそらく私はもう少し明確にする必要があります。私は実際にPrologについて質問していません。ほとんどの実際のアプリケーションにPrologを選択するのが得策ではない理由がわかります。
私が話していることの例をもっと示すために、Pythonのリスト内包/マップ/フィルターを検討してください。これらは明らかに関数型言語の影響を受けています。Pythonのような言語も、関数型言語のように論理プログラミング言語からこれらの種類のものを取り上げていないのはなぜですか?
prolog - Prolog の幅優先
Prolog のデフォルトの深さ優先検索スキームよりも幅優先を使用する一般的な考え方は何ですか?
無限の枝を取りませんか?
Prolog で幅優先を使用する一般的な方法はありますか? 私はグーグルで検索してきましたが、初心者にとって有用な情報があまり見つかりませんでした.
prolog - Prolog方言Provaのドキュメント
SWI-PrologからProvaに切り替えたいのですが、予想より難しいようです。
のような述語succ()
は使用できず、のような操作は機能Var1+Var2>Var3
しません(明らかにVar3<Var1+Var2
有効である必要があります)。
Prolog方言の違いを説明する利用可能なドキュメントはありますか?
java - Java 用組み込み Prolog インタープリター/コンパイラー
私はJavaでアプリケーションに取り組んでおり、その機能の一部として複雑な論理ルールの推論を行う必要があります。結果として得られるコードは非常に単純で保守しやすいものになると信じているため、Java の代わりに Prolog やその他の論理/制約プログラミング言語で論理演繹をコーディングしたいと考えています。
Prolog に埋め込まれた Java の実装を探してみたところ、多数の実装が見つかりましたが、それぞれのドキュメントはほとんどありませんでした。私の(控えめな)選択基準は次のとおりです。
- Java に組み込むことができる必要があります (たとえば、外部プログラムのネイティブ インストールを必要とする代わりに、私の Java パッケージにバンドルすることができます)。
- Java から使用するシンプルなインターフェース (推論の開始、結果の検査、およびルールの追加用)
- それを使用する方法に関する少なくともいくつかの例が付属しています
- 必ずしも Prolog である必要はありませんが、上記の基準を持つ他のロジック/制約プログラミング言語も私のニーズに合っています。
どのような選択肢があり、その利点と欠点は何ですか?
python - Pythonでのリレーショナル/論理プログラミング?
私は長年のPython開発者であり、最近Prologに紹介されました。特定の種類のタスクにリレーションシップルールを使用するという概念が大好きで、これを私のレパートリーに追加したいと思います。
Pythonでの論理プログラミングに適したライブラリはありますか?Googleで検索を行いましたが、次のものしか見つかりませんでした。
Relational_pythonに関するjtauberのブログシリーズ
他の人と比較したいです...ありがとう!
-aj
data-structures - モードでポイントツー分析を実装するにはどうすればよいですか?
ポイントツー分析アルゴリズムを実装します。主にWhaley と Lam によるアルゴリズムに基づいて、この分析を実装したいと思います。Whaley と Lam は、DatalogのBDDベースの実装を使用して、ポイントと分析の関係を表現および計算します。
以下に、典型的なポイントツー分析で使用されるリレーションの一部を示します。、 、およびがすべて真である場合、D(w, z) :− A(w, x),B(x, y), C(y, z)
意味D(w, z)
は真であることに注意してください。BDD は、これらの関係を表すために使用されるデータ構造です。A(w, x)
B(x, y)
C(y, z)
関係
ルール
Maudeがポイントツー分析を実装するのに適した環境であるかどうかを理解する必要があります。Maude がBuDDyという BDD ライブラリを使用していることに気付きました。しかし、Maude は BDD を別の目的、つまり統合のために使用しているようです。そのため、Datalog エンジンの代わりに Maude を使用して、ポイントと分析の関係を計算できるのではないかと考えました。モードは独立した情報を同時に伝播すると思います。そして、この並行性により、ポイントツー分析がルールの順次処理よりも速くなる可能性があります。しかし、モードで私の関係を表現する最良の方法がわかりません. Maude に自分で BDD を実装する必要がありますか、それとも BDD に基づく Maude の内部統合は同じ効果がありますか?
scala - Scalaで論理プログラミングを行うことはできますか?
Scalaのマッチ/ケース機能でサポートされているようなパターンマッチングが実際にはPrologのようなロジック言語から借用されていることをどこかで読みました。
Scalaを使用して、連結グラフの問題などの問題をエレガントに解決できますか?例:https ://web.archive.org/web/20100214144956/https://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_15.html