関数型リレーショナルプログラミングと関数型プログラミングの違いは何ですか?


8

このスレッドリンクされた論文の両方を読んでも FRP(関数型リレーショナルプログラミング)が(FP)関数型プログラミングとどのように異なるのか理解できません。

FRPはFPを増強または置き換えますか?FRPをFP言語のライブラリとして実装できますか?

回答:


8

関数型リレーショナルプログラミングは、その名前が示すように、関数型プログラミングとリレーショナルモデルの両方がブレンドされているようです。この文はそれをかなり要約していると思います(p。42):

FRP では、すべての必須状態は関係の形を取り、必須ロジックは(純粋な)ユーザー定義関数で拡張された関係代数を使用して表現されます。

関数型プログラミングは状態を方程式から削除し、純粋な関数のみを扱います(副作用はありません)。これはされてなっしたがって、プログラムについての理由にそれが容易になり隠されてからデータ操作を防止することにより、誰に物事を容易にします。FPは美しい理想ですが、実際のアプリケーションでは状態が必要であり、多くの場合有用です。もちろん、FPで状態を保持することは可能ですが、少しだけ複雑です。

紙を一目見ただけでは、厳密に制御された方法で状態を許可することでFPを簡素化しようとしているようです。リレーショナルデータは適切に構造化されており、論理的なプログラムは論理的に理解しやすく(おそらく人間の感覚ではそうではないかもしれません)、FPにRを追加して、すべての国家を愛する暮らしを簡単にしましょう。


ご回答ありがとうございます。予想どおりのサウンドですが、FPとそれほど意味がありません。私が理解できなかったのは、FP言語を拡張するだけでなく、多くの人々が独自のFRPツールを実装している理由です。

@MattFenwickあなたはここに正しい「R」を持っていると確信していますか?また、一般にFRPと略され、FPの専門分野でもある関数型リアクティブプログラミングもありますが、リレーショナル代数とはまったく関係ありません。FR(eactive)Pの独立した/専門的な実装はたくさんありますが、FR(elational)Pについて聞いたことがありません。
Ptharienの炎2012

@flameはい、きっと。詳細については、リンク先の論文を参照してください。

注目すべき1つの非常に興味深い言語はOpaです。Opaは、(リレーショナルまたはドキュメントの)データベースレコードにバインドされた変更可能な状態、非常に直接的なクエリ構文、および非常に強力な型システムを提供する関数型言語です。それ自体は関数型リレーショナル言語ではありませんが、関数型リレーショナルプログラミングのアイデアを実行するのに適した言語かもしれません。(これが「JavaScriptフレームワーク」としてどのようにブランド化されているかに騙されないでください。これは、これまでに見たものとは異なり、コンパイルされた独自の言語です。)
mindplay.dk

PS:@axblountに感謝します、これは絶対に美しい答えです!
mindplay.dk 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.