私はPrologの力にかなり驚いていました。頭を浮かべるまでには時間がかかっていましたが、私にとってはそれがそこで最もクールな宣言的言語であるようでした。だからこそ、最近、Scalaを使った2年間の関数型プログラミングの2年後に、論理プログラミングをもう一度見て、実際の使用のために「自分の脳を鍛える」か、より良いものにすることに決めました。学習するのに最も有用で教示的な機能論理言語
宣言的パラダイムの両方の概念を習得するために、機能的プログラミングと論理的プログラミングを組み合わせることは魅力的なようです。私はまた、非常に便利で魅力的な強いタイプのシステムを見つけることができます。
Scalaは本当にinteropで輝きました。車輪を改造してはいけません。別のメイン言語でコードを呼び出すことができ、呼び出し可能であることが望ましいはずです。しかし、Javaである必要はありません。 Cやハスケルも大丈夫だろう。
これは今日最も有用で啓発的なFLP言語であり、あなたの意見や提案は何ですか?ここで
は、私がこれまでに見つけたものです:
Mercury:クレームが高速であることを、強く型付けされたプロローグを。純粋な宣言的ですが、論理変数はありません!制約プログラミングはありませんか?最も広く使用されているFLPと思われます。 Interop?
Curry:有望で最も進歩しているようですが、現在はドキュメントが少ししかありません。 「実験的」とはまだ未熟な/潜在する準備ができていないという意味ですか?ハスケルに基づいているか、実際にはハスケルとの相互運用性が高いですか?
Ciao:私が望む多くの機能を提供しているようですが、1984年以来存在していますが、スタックオーバーフローはまったく分かりません。どうしたの? Interop?
drools(java library/DSL):ハイブリッドフォワードおよびバックワードチェインを可能にすると主張しています。成熟した。 Java/Scalaとの直接の相互運用は可能ですが、変更可能なデータ/命令型の構造に頼っていますか?機能的なJVM言語との統合性はどれくらいですか?
miniKanren:実装はいくつかのプラットフォームに存在します。 interopはどうですか?効率的ですか?
が、理論的読み込み、カレーに偏っかつ実用的な懸念に対処ません:
私は専門家ではありませんが、カレーは最も有望なものです。ハスケルのように見えますので、Prolog&Mercury(YMMV)よりも読みやすくなります。あなたはHaskellのように "普通の"純関数を書くことができます。あなたはそれからHaskellに電話することができます。 - まったく別のパラダイムではなく、強力なロジックと制約プログラミングの機能(機能パターンなど)が追加されたHaskellのように感じます。 –