問題タブ [prolog-directive-dynamic]

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.

0 投票する
1 に答える
3910 参照

prolog - gprolog で述語動的を宣言する

私はPrologにこのコードを持っています:

しかし、私はまだこのエラーが発生します:

goto(foo) を実行すると。

動的ドキュメントを読みましたが、少なくとも gprolog では、その使用方法がわかりません。何か不足していますか?

0 投票する
1 に答える
23068 参照

prolog - プロローグの「動的」述語

データベース ファイルがロードされた後に assert を使用できるようにルールを動的にしたい場合、どうすればよいですか? 現在 XSB Prolog を使用しています。ファイルは次のようなものです。

XSB でファイルを参照しようとすると、エラーが発生します。

何か案は?

0 投票する
3 に答える
529 参照

performance - Prologでの効率的な可変グラフ表現?

Prologで可変グラフを効率的に表現したいと思います。グラフでサブセットを検索し、それらを他のサブセットに置き換えます。

データベースを「グラフストレージ」として使用して、なんとか機能させることができました。たとえば、私は持っています:

retract次に、一致したサブセットにいくつかのルールを使用し、を使用してそれらを新しいステップに置き換えますassert。私はこの方法が本当に好きです...読みやすく、扱いやすいので、Prologに多くの重いパターンマッチング作業を任せています。

グラフを表すために私が知っているもう1つの方法は、ノードと隣接接続のリストを使用することです。この方法を使用しているWebサイトをたくさん見ましたが、オーバーヘッドが大きいため、少し躊躇しています。

実行時間は私にとって重要であり、私自身の開発のしやすさも重要です。

どちらのアプローチの長所/短所は何ですか?

0 投票する
1 に答える
950 参照

prolog - 述語キャッシュ

述語をキャッシュするProlog実装またはライブラリはありますか?

または、次のように、assertz /1とretract/1を使用してFIFOキャッシュを実装しますか?

ECLiPSe-CLPでは、少なくとも、追加の論理変数を使用してfindall/3行を置き換えることができます。

私のボックスでは、このccall / 1への1000回の呼び出しは、> 4.00 cpu秒かかりますが、実際の目標cpu時間はごくわずかです(0.04 cpu秒)。したがって、インタープリター内に実装されたキャッシュ(特にLRUキャッシュなど)は、assertz/1およびretract/1よりもパフォーマンスが優れていると思います。

もちろん、すべての述語にキャッシュを設定したくはありません。シナリオは次のようになります。副作用はありませんp([H|T], E) :- q(H,E) ; p(T,E)。着実に成長しているリストが求められていますが、常に/しばしば同じです。q/2p/2E

0 投票する
1 に答える
1332 参照

prolog - assert/1 で変数を使用できますか?

私が今持っているものは、X(Y) が私の小さな DB で受け入れられた事実ではないことを確認します。X(Y) は false を返すため、それをアサートしようとします。(X が事実ではなく規則である場合、これは問題を引き起こすことを認識しています)

たとえば、この事実がDBにあるとしましょう

ifNotAdd(哺乳類、ゾウ) に質問します。

私はそれを見たいですか?哺乳類(ゾウ)。は false で、哺乳類 (象) をアサートします。

明らかに「assert(X(Y))」です。行が間違っていますが、何に置き換えますか? 答えを求めてプロローグのドキュメントとフォーラムを探していますが、今のところうまくいきません。私はまた、これを自分で行うものを書き込もうとしています。

編集 ユーザーが対話できる動的データベースを作成するには、DB を編集する必要があります。私は引数マシンを構築していますが、システムがドメイン外の知識を処理できるように、ユーザーが「事実を確実に知っている」ことをシステムに伝えることができるようにする必要があります。

http://en.wikipedia.org/wiki/Reason_maintenanceの流れで

乾杯、

0 投票する
1 に答える
7827 参照

prolog - プロローグで動的な事実を作成したい

私は次の簡単なコードを書きました。「男性」と書くと、このコードは「男性ですか?」と尋ねられることを期待しています。「いいえ」と入力すると、画面に「彼女は女性です」と表示されます。

しかし、このコードには次のエラーがあります:

swi-prologのエラーは次のとおりです。

0 投票する
2 に答える
1087 参照

prolog - プロローグで頭のない節はどういう意味ですか?

Prolog プログラムの冒頭で、次のように表示されます。

頭のない節のようです。どういう意味ですか?

0 投票する
1 に答える
41 参照

list - 予測不可能な動的述語の動作

さまざまな述語にまたがるリストに要素を追加する必要があるという問題があります。引数ベースのリストを使用するのではなく、動的リスト述語を使用することにしました。簡単な例を以下に示します。最初に使用したときは問題なく動作しましたが、現在は引数を X として使用すると、プログラムを閉じて再コンパイルした後でも、リストから以前の引数データを取得し続けます。何が悪いのか誰か知っていますか?

0 投票する
2 に答える
338 参照

prolog - Prolog を使用して、別のファイルから情報を取得できますか?

簡単な翻訳スクリプトを書こうとしていますが、ファイルがかなり長くなり、ややこしくなります。これは主に、すべての翻訳をファイルの最後に保存したためです。動詞 (英語、フィンランド語) の形式です。

それらを別のファイルに保存する方法があるかどうか疑問に思っているので、それらを処理する必要はありません。相談述語の使用を検討しましたが、それがまさに私が必要としているとは思いません。SWI-prolog でこれを行う方法はありますか?

念のため、consult 述語を使用すると、次のエラー メッセージが表示されます。

ただし、consult 述語を使用しようとすると、次のエラーが発生します。

0 投票する
1 に答える
905 参照

prolog - 動的なファクト値を取得するプロローグ

Prolog を学習しながら、テキストベースのゲームを書いています。これはその一部です。

静的プロシージャに関するエラーが発生しましたが、簡単な検索で修正されました。ゲームを実行しているときに、すぐにdynamic stat/3. ただし、その後、Health 変数を宣言するファイルのさらに上にエラーが表示されます。

問題をこれに絞り込みました(プロローグコンソール):

動的と宣言された後、静的データベースにはもうありません。しかし、グーグル検索では、私と同じ問題を抱えているケースを見つけることができませんでした. 単一のデータベースを照会して撤回/アサートするだけです。