問題タブ [meta-predicate]

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

lambda - 「匿名」述語で maplist/3 を使用することは可能ですか?

maplist/3 で達成したいことは、たとえば次の擬似コードです。

たとえば、次のように書くことができることを知っています

したがって、疑似コードlambda X: Z/Y=X, to_lower(Z,LC), char_code(L,LC), return L/Yを通常の述語として定義し、この述語をマップリストで使用できます...

しかし、まったく新しい述語を作成せずにこれを行うことができるかどうか、私は興味がありますか?

このようにしたい理由は、述語を見つけるためにコードを飛び回るよりも、読む方が自然だと思うからです。

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

prolog - パス/トレイル/ウォークの定義

多くの述語は、二項関係を介して定義されたエッジから構築されたある種の非循環パスを定義します。これは、推移閉包を定義するのと非常によく似ています。したがって、一般的な定義が求められます。

グラフ理論で定義された概念は、一般に期待されているものとすぐには一致しないことに注意してください。最も注目すべきは、エッジの名前には関心がないことです。

さらに悪いことに、グラフ理論も少し変更され、 walk の概念が導入されました

伝統的に、現在一般にオープンウォークとして知られているものと呼ばれる道。今日では、条件なしで述べた場合、通常、パスは単純であると理解されています。つまり、頂点が繰り返されない (つまり、エッジが繰り返されない) ことを意味します。(チェインという用語は、すべての頂点とエッジが異なるウォークを指すためにも使用されています。)

だから私の質問は: この機能に名前を付けて定義する方法は?

私がこれまでに行ったことは、次のように定義することです。

最初の引数は、さらに 2 つの引数がない不完全な目標である関係の継続でなければなりません。次にPath、頂点または頂点のペアのいずれかが続きます。

使用例

実装

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

module - ライブラリのメタ述語に渡されるゴールのモジュール展開

SWI-Prolog (マルチスレッド、64 ビット、バージョン 7.3.5) を使用して、段階的に進めます。

  1. モジュールでを定義します(発音: " di-SEE-goh "):a//1dcgAux

    /li>
  2. とを使用して、次のクエリを実行しphrase/2ますapply:foldl/4

    ねえ!かなりの驚きであり、良いものではありません。未知の未知のものを見逃していませんか?

  3. 上記の苛立たしい行動を取り除くには、まずその原因を突き止める必要があります。

    /li>

どうしたの?私がそれを見る方法はこれです:

  • に渡されるゴールのモジュール拡張foldl/4は制限されています。
  • のSWI-Prolog マニュアルページimport_module/2からの引用:

    すべての通常のモジュールは、システムからインポートするユーザーからのみインポートします。

  • SWIlibrary(apply)は からのみ「継承」しますsystemが、 は継承しませんuser

  • applyモジュールを複製applY(および新しいモジュール名を伝搬) すると、次のことがわかります。

    /li>

私がどのように進めるべきか、どのように進めるべきかについて、あなたのアイデアを共有してください!

(他の Prolog プロセッサで同様の実験をまだ行っていません。)

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

count - Prolog ゴールを入力として最初の引数の位置に置き、このゴールが 2 番目の引数の位置で成功する回数を返します

タイトルが示すように、これを行うプログラムを書きたいと思います。

例は次のとおりです。

ただし、組み込みメンバーだけでなく、次のような一部の演算子についても同様です。

誰かが私が始めるのを手伝ってくれますか?

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

prolog - Prolog 高階リデュース述語

高次マップ述語を次のように定義できます。

同様に、 fold (左) を次のように定義できます。

reduce (左)の正しい定義は? 次のように定義できますか?

そして、次のようにreduceback(右)?

これらは正しいですか?