問題タブ [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.
if-statement - Prolog の If-Else ステートメントを使用した再帰関数
R = (2*X + Y)^N
指数演算子を使用せずに計算する再帰関数をプロローグに書き込もうとしています。if-else ステートメントを使用して再帰関数を作成しましたが、エラーが発生しました: ) or operator expected
. 構文は正しいように見えますが、何かが欠けているに違いありません。コードは以下です。
prolog - プロローグを使用して文字列の長さを見つける方法
リストの長さを取得するメソッド length(list,var) を取得しましたが、文字列の長さを知りたいのですが、解決策がある人はいますか?
prolog - A searchable Prolog language description online
Is there a description of Prolog language (syntax and semantics) available online?
There are a lot of reference manuals for implementations. But neither of those is a language description. For example the SWI Prolog manual states
This manual does not describe the full syntax and semantics of Prolog.
And refers to a set of books printed on paper, published in the nineteen eighties. And to ISO standard which is for money and "should be available from my country's ISO representative" gibberish.
serialization - SWI Prolog の Python ピクルスと同等ですか?
特定の長さまでのすべての文字列に対してブルートフォース検索を行っているPrologプログラムがあります。どの文字列が特定のパターンに一致するかを確認し、うまくいけばすべての文字列をカバーする一連のパターンが見つかるまでパターンを追加し続けます。どのパターンにも一致しないものをファイルに保存したいので、新しいパターンを追加するときに、総当たり検索全体を再度実行するのではなく、残り物を確認するだけで済みます。
これを Python で書いていたら、文字列のリストをピクルして、ファイルからロードするだけです。Prologで似たようなことをする方法を知っている人はいますか?
Prolog プログラミングの経験は豊富ですが、Prolog IO の経験はほとんどありません。おそらく、ファイルを読み取って用語に解析するための述語を作成することもできますが、もっと簡単に行う方法があるのではないかと考えました。
list - リスト内の既存のアトムに基づいて新しいアトムを生成する
別のリストの既存のアトムに基づいて、リストに新しいアトムを生成する方法を知りたいです。指定されたリスト:
たとえば、新しいリストを作成したいと思います。
つまり、文字列の追加に似たものです。
prolog - CFG への拡張、それは何ですか?
規則が左側に、非終端記号の右側に 1 つ (または複数) の終端記号を持つことを許可する、文脈自由文法への次の拡張を検討してください。つまり、次の形式の規則です。
右辺は、文脈自由文法のように、何でもかまいません。特に、右側が最後にまったく同じ終端記号を持つ必要はありません。その場合、この拡張機能は状況依存になります。しかし、端末は単なるコンテキストではありません。時々、この端末は「プッシュバック」と呼ばれます。
明らかに、これはもはや CFG (タイプ 2) ではありません。1型を含みます。しかし、それは何ですか?本当にもう0型?
この特定の拡張は、Prologの Definite Clause Grammars dcgで許可されています。(誤解を避けるために、ここでは Prolog の完全な拡張を考慮しません。つまり、端子は有限のアルファベットに由来し、恣意的な項ではないと仮定します。また、DCG で許可されている Prolog の追加の引数も考慮しません。すでに 0 です。)
編集: 拡張機能を説明する簡単な方法を次に示します: フォームの CFG ルールに追加します。
prolog - Prologには、Common Lispのような条件と再起動システムがありますか?
Common Lispは、条件と再起動による例外処理を可能にします。大まかに言えば、関数が例外をスローすると、「キャッチャー」は「スローワー」をどのように/続行するかを決定できます。Prologは同様のシステムを提供していますか?そうでない場合は、コールスタックを歩いたり調べたりするために、既存の述語の上に構築できますか?
prolog - (\+)//1 の正当な使用
文法規則 ( dcg ) には、(',')//2
連結を('|')//2
意味する、代替を意味するなど、いくつかの事前定義された構造があります(\+)//1
。
個人的に、私はそれを使用するためだけに使用しました。他の人が書いたコードでそれを見たことがありません。
それで、合法的な使用法はあり(\+)//1
ますか?
編集:さらに、インスタンス化されていない変数を使用し(\+)//1
たクエリ内での正当な使用法があります。phrase(nt, L)
L
prolog - DCG拡張:安定性は無視されますか?
次のDCGルールがあると仮定します。
通常、これは次のように変換されます。
Prologシステムはそれを次のように翻訳することを許可されますか?つまり
、統一を頭と目標に統合することはできますか?
DCG拡張が安定しない場合
、expr呼び出しの3番目の引数に[41|B]を入れることは許可されません。
しかし、私は不動が整っていると思うので、すべてが大丈夫なはずですか?
さよなら
PS:不動の非公式な定義については、以下を参照してください
。Richard O'Keefe、2009年:
「Prologプログラミングにおける「不動」という用語の発明者として、
私はそれを支持する必要があります。不動は、基本的に
、述語を強制的に下げることができないことを意味します。
出力引数を間違って入力することによる間違ったパス。」
http://blog.gmane.org/gmane.comp.ai.prolog.swi/month=20090301
PSS:他のDCG変換については、たとえば最新の
DCG標準提案を参照してください。付録には、DCGトランスレータの
ソースコードが含まれています
。ISO/ IEC DTR 13211–3:2006
明確な句の文法規則
KlausDaessler
2012年11月20日
N238DINドラフト2012-11-20
prolog - 指定された入力が数字か大文字か小文字かをチェックするプロローグ プログラム
上記のプログラムに次のロジックを使用しましたが、エラーが表示され>=/2: Arithmetic: 'a/0' is not a function
ます。プログラムを修正するにはどうすればよいですか?
ありがとう