問題タブ [iso-prolog]

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 に答える
1634 参照

prolog - Prolog Functor - Computing x^y

I am new to prolog and trying out to learn how to program. I want to know how to compute x^y in Prolog both being integers.

I know for a fact that it goes something like this:

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

prolog - Best way to define predicate in Prolog

I have a problem with defining procedures in Prolog. I have two source files and want to consult Prolog engine with both of them. This can be done by invoking Prolog as swipl -g “['1.pl','2.pl'].

Both of the files are generated by another program written in another programming language and i can't predict the exact content of the files beforehand.

The problem is that in one of the files there is always a rule

But,sometimes the rule

does not exist in both of the files and i get a error "predicate2" is undefined, when executing some queries for predicate1.

If i include the line

into one of the files it only helps if predicate/2 is not defined in another file (otherwise i get something like "are you really sure you want to redefine the predicate2/2?". And here i don't want to redefine something to save the data from another file.

So,i have no idea how to make the predicate just "defined". I need a solution for SWI-Prolog or SICStus Prolog. (unfortunately the versions do not have a section for defining predicates,like visual Prolog)

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

prolog - Prolog (SWI-Prolog) の述語「simple/1」の意味は何ですか?

本を読んでいるときに問題が発生します。プログラムが「単純な」述語を使用しているのを見ます(私は推測しsimple/1ます)。この述語の意味がわかりません ?-help(simple)。コンソールで見つけることができません。しかし、コンソールでいくつかのクエリを試してみると、次のように機能しました。

引数が項(または変数)または複雑な項であるかどうかを判断するのは、ある種の述語だと思います。

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

prolog - Prolog中置演算子の定義

私は最近Prologについて学び、中置演算子を定義するために使用される3つのタイプが混乱していることに気付きました。

演算子のタイプを指定するときのxfx、xfy、yfxの違いは何ですか?私は問題についてグーグルで検索しましたが、有用なものは何も見つかりませんでした。

Prologで次のコードを入力してみました:

および出力:

結果は私に違いを示さなかった。

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

prolog - プロローグでメタプログラムをコンパイル中にエラーが発生しました

私は ECLiPSe Prolog でメタプログラムを実装しようとしています。ここに私が書いたコードがあります -

でクエリを実行するとsol(go(X)).、エラーが発生accessing a procedure defined in another module in clause(X is 5, _292)して中止されます。すべてのトップレベル モジュールをクリアし、ECLiPSe を再度開いてから実行しようとしましたが、それでも同じエラーが発生します。

その理由は何ですか?

ありがとう!

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

list - appendAll - リスト内のすべてのリストにリストを追加します

リスト内のすべてのリストにリストを追加する方法を見つけようとしています。

何かのようなもの:

私はまだプロローグを始めたばかりで、入れ子になったリストは私をかなり混乱させています。

私はこれを数時間見つめてきました:

どんな助けでも大歓迎ですありがとう!

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

prolog - Prolog の "/" が何を意味するのか分からないことがある

コードでは次のようにスラッシュが使用されています。

しかし、時々 Prolog で "/1" "/2" などを見ることがあります。

これらのステートメント (文字) は何を意味しますか?

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

prolog - Prolog:演算子を宣言する

私は定義しました!(階乗)関数とそれを算術関数と演算子として登録したので、実行できます:Aは6です!。

今、私は定義したいと思います!! (奇数の階乗)、しかし同じ方法-節を書き、arithmetic_functionと演算子を登録し、Aを呼び出すのは7です!! -結果はSyntaxErrorになります:演算子が必要です

可能であれば、どのように登録すればよいですか。オペレーター?

はい、わかりました!通常はカットです。

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

prolog - 複雑な抽象構文木の語順

抽象構文木について質問があります。
特に、特定の用語順序でいくつかのツリーをソートしたいと考えています。

次のプロパティを使用して AST の用語順序を定義するにはどうすればよいですか。

  1. ほとんどすべての用語について、順序は標準の組み込みの用語順序とまったく同じように動作します。
  2. AST に深くネストされているのは、ソース位置を表すファンクタ pos/6 の項です。これらのファンクタは項の順序では無視されるべきです。つまり、ファンクタ pos のすべての項は等しいものとして比較されるべきです。

「pos」の特別なケースで組み込みの用語順序を拡張することは可能ですか?

最も効率的なソリューションは何ですか?最も読みやすいソリューションは何ですか?

たぶん、私たちの AST は非常に大きくなる可能性があることにも言及する必要があります。私は 217479 個の適切なファンクターを持つ 1 つの AST をベンチマークしました (nullary アトムは無視します)。

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

prolog - Prolog-リストの異常な短所構文

Lee Naishの論文「 Prologの高階論理プログラミング」で、なじみのないProlog構文に出くわしました。これが論文からの最初のコードサンプルです:

私の混乱はでA.Asですisort(A.As, Bs) :-。コンテキストからは、これはリストの代替cons構文であるように見えisort([A|As], Bs) :-ます。これは。と同等です。

同様N.H.Lに言うのがより便利な方法のよう[N|[H|L]]です。

しかし、SWI Prologは、この異常な構文を受け入れません(私が何か間違ったことをしている場合を除きます)。

誰かがそれを認識していますか?私の仮説は正しいですか?どのPrologインタープリターがそれを有効な構文として受け入れますか?