問題タブ [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.
prolog - プロローグでの変数スコープの制限
次のように、リストのリストを宣言したいと思います。
ここで、シンボルA
は各リスト内の同じ変数を参照します。maplist(writeln,xs) を実行すると、次の出力が得られます。
各リストで同じシンボルを使用したいのですA
が、変数がリストごとに異なるようにするために、次の出力が得られます。
これを機能させる唯一の方法は、次のように、各リストに独自の変数を与えることです。
例 2 のように、各変数に番号を付ける必要がないように、Prolog 構文はありますか? 次のようにリストの周りに括弧を追加してみました:
しかし、これにより、例 1 と同じ出力が得られます。
prolog - 2 つのバリアント実装の違い
バリアント述語のこれら 2 つの実装に論理的な違いはありますか?
list - ものの無限リストは正気ですか?
Prolog では、統合X = [1|X]
は無限のリストを取得するための適切な方法ですか? SWI-Prolog には問題はありませんが、GNU Prolog は単にハングします。
ほとんどの場合、リストを次のように置き換えることができることを知っています
しかし、私の質問はX = [1|X], member(Y, X), Y = 1
、「正気の」Prolog実装で式を使用できるかどうかです。
prolog - プロローグの空白を置き換える
プロローグで、文字列のすべての空白を特定の文字に置き換えることは可能ですか? 例-変数がHow are you today?
あり、必要な場合How_are_you_today?
prolog - ** と ^ の演算子の優先順位が異なるため、若干の矛盾があります。
Prologで**/2
( xfx
) と(^)/2
( )の引数の優先順位が同じでないのはなぜですか?xfy
これにより、次のような小さな矛盾が生じます。
と:
しかし:
prolog - 2 つの変数セットの和集合
変数の 2 つのリストが与えられた場合、ISO Prolog で両方の結合を決定するための最もコンパクトで標準的な方法は何ですか? つまり、(メタ論理) 述語の定義が必要です。
およびリストのリストの場合
はUnion
、指定された s の一意の変数のリストですVarSet
。
これは、Cor.2:2012 を含む ISO/IEC 13211-1:1995の組み込みの概要です。
floating-point - Prolog の実装で「フロート」とは何を意味しますか?
SICStus マニュアルの構文の説明を調べたところ、"float" の定義があります。ただし、「float」の実装が実際にどのようなものであるかは示されていません。IEEE 単精度または倍精度? たぶんBigDecimal
?
SWI Prolog (または少なくともSWISH ) では、「float」は IEEE の倍精度のようです。次の方法で確認できます。
2.22e-16
に追加された最後の値であるため、IEEE 64 ビット浮動小数点演算に適した音1.0
よりも大きな値が得られます。1.0
他のプロローグにはどのような実装がありますか?
何年ぶりかの更新
より良いコード:
それで: