タグ付けされた質問 「logic-programming」


2
関数型プログラミングの違いリスト
質問岡崎以来の純粋に機能的なデータ構造の新機能 (論理プログラミングではなく)、およびjbappleの叙事詩の答えは、私は最近、これが見つけるために私を導いた。に興味を持ってきたものですこれは、関数型プログラミングでは、差分リストを使用して言及した差分リストの Haskellのための実装を。2つの質問があります(StackExchangeで2つの異なる質問をする必要がある場合は、ご容赦ください。)。 簡単な質問は、Haskellライブラリにあるもの以外に、関数型プログラミングや実装の違いリストの学術的検討を知っている人はいますか?jbappleの答えは、差分リストの引用を提供しませんでした(ロジックプログラミングの差分リストは、伝承と、Around Here Somewhere(TM)にあるいくつかのソースにあります)。Haskellの実装を見つける前に、そのアイデアが論理から関数型プログラミングに飛躍したことを知りませんでした。確かに、Haskellの差分リストは高階関数の自然な使用であり、ロジックプログラミングのものとはまったく異なる動作をしますが、インターフェイスは確かに似ています。 私が聞きたかったのは、もっと興味深い(そしてずっと曖昧な)ものは、前述のHaskell差分リストライブラリの主張された漸近的上限かどうかです。正しい/妥当と思われるです。私の混乱は、怠inessな複雑さの推論について明らかなものを見逃しているためかもしれませんが、大きなデータ構造上の置換(またはクロージャー形成、変数ルックアップ、または何か)が常に一定の時間がかかる場合にのみ、主張された境界が意味をなします。または、「キャッチ」とは、単に「ヘッド」と「テール」の実行時間に制限がないということです。これらの操作は、遅延計算/置換の任意の山を耕さなければならないからです。


2
論理プログラミング:B:-AC:-AからB、C:-Aへの変換
私が正しい場所に来たことを願っています...それは(おそらく)かなり単純な論理プログラミングの質問です。 フォームに2つの句がある場合: B:-A C:-A これらを次のように変換できます。 B,C:-A (編集: where B,Cは結合詞です。ボトムアップ評価を行っているので、それぞれのヘッドの結合詞を含む1つの句を使用して、同じボディを持つ複数の句を表すと便利です。これは簡単なようですが、このような変換には名前があります。ただし、結果の句がHorn句ではなくなったことを知っています。) この変換に名前があるかどうかは誰かが知っていますか。そうであれば、それを説明する場所へのポインタ(できればオンライン)を提供できます。 (n00bから)感謝します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.