問題タブ [minikanren]
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.
clojure - core.logic を使用して一意の DAG 親を一覧表示する
これは、(願わくば) 単純な論理プログラムで、私がしばらくの間行き詰っています。
親ノードのリストを生成するときに、core.logic のエッジ リレーションによって表される DAG があります。グラフに「ダイヤモンド シェイプ」があると、重複が発生します (ここではサイクルについて話しているわけではありません)。
この場合、親の個別のリストを生成する方法はありますか (parento を書き直すなど)?
(:b :c :a) を取得したいのですが、run* ステートメント内で実行したいと考えています (つまり、結果をセットにラップすることは、私が目指していることではありません)。
また、「^:tabled」をparentoに追加するとうまくいくようですが、tabledが導入するメモ化はしたくありません。
clojure - core.logic の出力で同じ値が繰り返されるのはなぜですか?
これをcore.logicで試しました
結果が[1 4] [1 5]
しかし、そうでした[1 4] [1 4] [1 5] [1 5]
それから私はそれで遊んで始めて、これを見つけました:
[1 5]
散在している場所[1 4]
何が起こっている?この繰り返しは、機能またはバグであるはずですか?
clojure - core.logicの動的型関係
core.logicで型関係を定義または使用するための最良の方法は何でしょうか?
フォーム引数の型を簡略化して表現するためにこのようなことを試みましたが、プロジェクトの使用によりさまざまな問題が発生します
これにはすでに適切な関係がありますか、それとも別の方法で表現する必要がありますか?
prolog - 部分的な辞書/レコードの統合?
一部の Prologs は辞書のような連想データ構造をそのままサポートしていることを理解しています。そうする実装では、実際にはすべてのキーを含まない別の構造との部分的な統合の概念をサポートしていますか?
たとえば、core.logic/miniKanren の構文では次のようになります。
これは、q が 1 にバインドされた単一の結果を返します。
プロローグは、この操作またはこの部分構造に名前を付けますか?
clojure - 2 方向への射影は、core.logic でリレーショナルとしてカウントされますか?
project
in core.logic はリレーショナルではないことを理解しています。
ただし、内部で両方向に射影することにより、リレーショナルのような動作を得ることができるようですconda
。
これはリレーショナル操作としてカウントされますか? それとも、これを非リレーショナルにする何かが欠けていますか?
clojure - Clojure.logic と The Reasoned Schemer の違い
Clojure.logic を使用してThe Reasoned Schemer (TRS)に取り組み、ここに記載されている相違点に注意を払いました。チャプター 3 のフレーム 24 に到達しました。TRS は次のことを報告しています。
生成する必要があります
今、私は `lolo as を実装しました
次の奇妙な結果が生成されます。
これは基本的に、私のloloが新しい変数を漏らしているソリューションを生成していることを意味します. パターンを見ようとして続けていれば、
しかし、霧の中で十分にはっきりと見ることができません。これに光を当てていただければ幸いです。それは私のloloのバグですか?clojure.logic のバグですか? TRS のソルバーと clojure.logic のソルバーの違いは合理的ですか? 結果をどのように解釈または使用できますか? どうすれば clojure.logic の結果を頭の中で予測できますか?
prolog - 制約ロジック プログラムのモデリング (解析用)
オブジェクト指向プログラムは、Automata、Process Algebras、Petri Nets、UML などのさまざまなモデルによってモデル化できます。これらのモデルの一部を使用して、さまざまな種類の分析を実行し、パフォーマンスまたは設計の問題を特定できます。
私は論理プログラミングについて勉強していますが、CLP にそのような種類のモデルがあるのだろうか? CLP プログラムの分析はどのように行いますか?
clojure - lvars を含むマップを一致させる方法は?
データ構造としてマップを使用しようとしていますが、マップを初期化して、lvars
後で他のリレーションから値を割り当てるようにしています。
これは成功します:
しかし、これらは失敗します:
を使用して[org.clojure/core.logic "0.8.5"]
います。どうすれば両方の目標を成功させることができますか?