Was ist der Unterschied zwischen funktionaler relationaler Programmierung und funktionaler Programmierung?

8

Nachdem ich sowohl diesen Thread als auch das verlinkte Papier gelesen habe, verstehe ich nicht, wie sich FRP (Functional Relational Programming) von (FP) Functional Programming unterscheidet.

Erweitert oder ersetzt FRP FP? Kann FRP als Bibliothek in einer FP-Sprache implementiert werden?


quelle

Antworten:

8

Funktionale relationale Programmierung scheint, wie der Name schon sagt, eine Mischung aus funktionaler Programmierung und relationalem Modell zu sein. Ich denke, dieser Satz fasst es ziemlich gut zusammen (S. 42):

In FRP nimmt jeder wesentliche Zustand die Form von Beziehungen an, und die wesentliche Logik wird unter Verwendung einer relationalen Algebra ausgedrückt, die um (reine) benutzerdefinierte Funktionen erweitert wird.

Die funktionale Programmierung entfernt den Zustand aus der Gleichung und behandelt nur reine Funktionen (keine Nebenwirkungen). Dies soll die Dinge für alle einfacher machen, indem verhindert wird, dass Datenmanipulationen ausgeblendet werden, wodurch es einfacher wird, über das Programm nachzudenken. FP ist ein schönes Ideal, aber in realen Anwendungen ist der Zustand notwendig und oft nützlich. Es ist natürlich möglich, einen Zustand in FP zu haben, es ist nur ein bisschen mehr involviert.

Basierend auf einem kurzen Blick auf das Papier scheint es, dass sie versuchen, FP zu vereinfachen, indem sie den Zustand auf streng kontrollierte Weise zulassen. Relationale Daten sind gut strukturiert und leicht zu überlegen, und funktionale Programme sind leicht zu überlegen (vielleicht nicht im menschlichen Sinne). Lassen Sie uns also FP mit R erweitern und das staatsliebende Leben aller einfacher machen.

Axblount
quelle
Danke für die Antwort. Klingt so, wie ich es erwartet habe - nicht wirklich bedeutungsvoll anders als FP. Was ich nicht herausfinden konnte, war, warum viele Leute ihre eigenen FRP-Tools implementierten, anstatt nur eine FP-Sprache zu erweitern.
@ MattFenwick Bist du sicher, dass du hier das richtige "R" hast? Es gibt auch Functional Reactive Programming, das auch als FRP abgekürzt wird und eine Spezialisierung von FP ist, aber völlig unabhängig von relationaler Algebra ist. Es gibt viele unabhängige / spezialisierte Implementierungen von FR (eactive) P, aber ich habe noch nie von FR (elational) P gehört.
Ptharien Flamme
@flame ja, ich bin sicher. Weitere Informationen finden Sie im verknüpften Dokument.
Eine sehr interessante Sprache ist Opa - eine funktionale Sprache, die einen veränderlichen Status bietet, der an (relationale oder dokumentarische) Datenbankdatensätze gebunden ist, eine sehr direkte Abfragesyntax und ein äußerst leistungsfähiges Typsystem. Es ist an sich keine funktional-relationale Sprache, aber es könnte eine geeignete Sprache sein, um die Idee der funktional-relationalen Programmierung auszuüben. (Lassen Sie sich nicht täuschen, wie dies als "JavaScript-Framework" bezeichnet wird - es ist eine kompilierte und einzigartige Sprache, wie ich sie noch nie gesehen habe.)
mindplay.dk
PS: Danke @axblount, das ist eine absolut schöne Antwort!
mindplay.dk