問題タブ [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 に答える
1403 参照

prolog - SWI-Prolog ダイナミック/1 vs ダイナミック/2

私は独学で Prolog を学んでおり、いくつかの例が与えられています。

そのうちの 1 つはdynamic/1組み込みディレクティブを使用します。

ダイナミクスの考え方が分かります。それは、アサートを介して述語を変更し、述語を撤回できます。

ただし、プログラムは次の場所も使用します。

2 つの /1 と /2 の違いは何ですか。また /3 .... /n ですか?

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

prolog - Prolog で動的述語を処理する正しい方法

ロボット システムのナレッジ ベースを書いています。システムは、実際には 2 つの部分で構成されています。KB のルールと、センサーの読み取りによって生成された一連の述語です。

たとえば、可能なルールは次のとおりです。

検知システムは、次のような述語を生成します。

ワークフローは、センサーによって生成された述語を参照し、ルール エンジンを参照してから、何をすべきかを問い合わせることで構成されます。(つまり do(X))

問題は、(たとえば) canSee述語がセンサーによって生成されない場合、ルールdo(shoot(E))を見たときにプロローグが未定義の手順について文句を言うことです。

考えられる回避策は、ルールで基本述語 ( canSee(nothing)など) のリストを生成することですが、これが最善の方法であるかどうかはわかりません。

何か案は?

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

csv - 複数のテーブルの csv 読み取りの適応

私は次のものを持っています:

prepare_db が column_keys と mb の述語を定義するために 2 つの追加引数を取ることができるように、これを適応させる最良の方法は何ですか。

例えば?-prepare_db('my_file.csv',mb_column_keys,mb).

mb/3 および mb_column_keys/1 に対してファクトがアサートされる結果になります

OK、ファイルを次のように変更しました。

しかし、それは少し醜いように見えます.これを達成するためのよりエレガントな方法はありますか?

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

prolog - current_predicate/1 は :- dynamic では機能しませんか?

Prolog でアサートを使用して定義する述語がいくつかあります。

current_predicate/1アサートが実行されたかどうかを知るために使用しています (1 つの値のみをアサートする必要があります)。

しかし、swipl不平を言い続けます:

そこで、 を追加したの:- dynamic amountOfStudentsInCourseAsserted/2ですが、残念ながら、これは述語を current_predicate(Predicate). に追加します。したがってcurrent_predicate/1、この動的ネーミングを使用していると、もう使用できません。

current_predicate/1動的な名前には当てはまらない別の述語はありますか?