関数型論理プログラミングのカプセル化検索における最新技術とは何ですか?


8

カプセル化された検索が評価の順序に依存する可能性がある問題の解決策に特に興味があります。

[1]によると、PAKCSでのカプセル化された検索は評価の順序に依存しますが、MCCではそうではありませんが、それを使用するにはコンパイラーの実装に関する知識が必要であり、Curry言語仕様に従っていません。これは2007年に書かれたため、もちろん現在は古くなっている可能性があります。

KiCS2はIOモナドでカプセル化された検索の結果を返しますが、理由はわかりません。

[1]Braßeland Huch、関数型プログラミングと論理プログラミングのより緊密な統合について、Proc。APLAS 2007

回答:


1

IOモナドを使用する理由は、Brassel and HuchおよびHanus、2004年に記述されているようですが、セットではなくリストを使用する明確な理由がわかりません。私はそれが遅れてリストを作り上げることができるのでそうだと思います。

2007年の論文で説明されているアプローチは、何らかの理由(理由はわかりません)で満足できなかったようです。KiCS2は、2004年の論文で説明されている「API」、つまりIOモナドを使用しているためです。(IOモナドを使用しない安全でないバージョンがありますが、それは参照透過ではありません!)


list-vs-setについては、マルチセットを返すことがあると彼らは言ったと思います。
Erik Kaplun、2015年

1

http://www-ps.informatik.uni-kiel.de/kics2/lib/Findall.htmlを参照してくださいIOベースのアプローチは非推奨であり、優先される方法はCurryのSetFunctionsモジュールではないということです。この新しい設計はIO-wrapped戻り値を排除しますそして、非決定性と参照非透過性が純粋なFPランドに漏れるのを回避するための他の手段があります。


ここでリソースを適切に引用する方法についての議論を削除しました。チャットを続けましょう。これは、より適切なプラットフォームです。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.