問題タブ [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 - N がバインドされていない場合の `nth0/3` の動作
SWI Prolog に「nth0」クエリを入力すると、結果は次のようになります。
ただし、SWI マニュアルには次のように記載されています。
したがって、このテキストに対する私の理解が正しければ (?)、以前の結果ではなくエラーが発生するはずです。
また、ISO規格を考慮した正しい振る舞いはどれなのか気になります。
(stack-overflow では参照用の質問が許可されていないことはわかっているので、標準へのリンクは求めませんが、次のように尋ねてもルールを破らないことを願っています: ISO 標準は公開されていますか? そうでない場合は、同等の RFC?)。
module - prolog の ISO モジュール標準が失敗したのはなぜですか?
ここの紹介では、Prolog の ISO モジュール標準は失敗だったと述べています。誰でもこれについて詳しく説明できますか?
syntax - 優先度の高い演算子であるアトムに丸括弧が必要ないのはなぜですか?
古い教科書1では、次のような演算子宣言に頻繁に遭遇します。
これらの丸括弧は以前は必要でした。しかし、今日、それらはもはや必要ありません。
それらが不要になったのはなぜですか?規格はこの状況にどのように対処しますか?
1 p.97 6. MU-Prolog 3.2db リファレンス マニュアルの標準演算子宣言、Lee Naish、LNCS 238、Springer-Verlag 1985 による Prolog の否定と制御に記載。
prolog - 特定のライブラリ モジュール内の述語の一覧表示
SICStus Prolog の特定のライブラリ モジュールで定義されているすべての述語を一覧表示する手段はありますか?
たとえば、リストモジュールをロードした場合:
プロンプトから実行して、どの述語がインポートされたかを確認できる別の述語はありますか?
sorting - sort/2、keysort/2 対 samsort/3、predsort/3
ISO-Prolog は、しばしば「標準用語順序」と呼ばれる用語順序 (7.2) に依存するものを提供しsort/2
ますkeysort/2
。El
リストを異なる順序でソートする一般的な方法は、そのリストの各要素を何らかの形でペアのリストにマップしてから、XKey-El
そのリストをソートし、最後にキーを射影することです。例として、 をどのようkeysort/2
に表現できるかを考えてみましょうsort/2
(実装については注を参照してください)。
predsort(C_3, List, SortedList)
多くの場合、このアプローチは、SWIや SICStus などのユーザー定義の順序に依存する一般的な実装固有の並べ替え述語を使用するよりもはるかに高速ですsamsort(O_2, List, SortedList)
。
私の質問は次のとおりです。
predsort/3
respを使用したソートが行われる場合がありますか。samsort/3
いくつかのマッピング、sort/2
-ing、および投影に置き換えることはできませんか? 1
わかりやすくするために、有限の基底項に固執することをお勧めします。というのは、無限の基底項は、有限の場合の拡張として必要になるため、完全な辞書式順序を持たないからです。さらに、ISO/IEC 13211-1:1995 の 7.2.1 を考えると、実装に依存する 2 つの異なる変数の場合との変数の比較がどのようになるかは明確ではありません。
7.2.1 変数
X
とY
が同一でない変数の場合、
X
term_precedes は 、ソートされたリスト ( 7.1.6.5、8.10.3.1 j) の作成中に順序が一定のままであることを除いて、Y
実装に依存するものとします。
predsort/3
そのため、ソートされたリストの作成としてまだ資格があるかどうかは明らかではありません。明らかなことは、 と の間 sort/2
に順序が一定のままであることkeysort/2
です。
1 @WillNess のおかげで、この射影には少なくともreverse/2
線形変換も含まれている必要があります。また、重複した結果と一意の結果の両方を実装できることも意味します (keysort/2
実装方法と同様)。
prolog - Prolog でキーと値のペアを記述するにはどうすればよいですか?
IDloc1
が場所を指定することを示す次の述語があるとします。
Location 1
2 番目のテキスト ( )、つまり のようなキーと値のペアの翻訳を提供したいと考えていますen='Location 1', de='Ort 1', ru='Местоположение 1'
。
そのようなデータを Prolog、特に TuProlog (そして理想的には標準化された Prolog) でエンコードする正しい方法は何ですか?
以下の表記は SWI Prolog 以外でも機能しますか?