Funkcjonalne programowanie reaktywne / relacyjne - czy jest jakaś różnica?

12

Od jakiegoś czasu używam Reactive Cocoa (GitHub), funkcjonalnego API programowania reaktywnego do użytku z bibliotekami Cocoa, ale właśnie przeczytałem „Out of the Tar Pit” , artykuł, który podobno przedstawia koncepcje, i jestem trochę zdezorientowany.

Artykuł przedstawia (jak rozumiem) funkcjonalne programowanie relacyjne , w którym tworzone są relacje między danymi z warunkami, które powinien egzekwować system FRP w celu zmniejszenia ilości potrzebnej „przypadkowej” logiki i stanu.

Moje pytanie brzmi: czy te dwie koncepcje - FR (eaktywne) P i FR (elacyjne) P są zasadniczo takie same (przy czym pierwsza z nich jest jedynie implementacją drugiej), czy istnieje zasadnicza różnica między nimi? Niestety w tej chwili moja wiedza na temat tego obszaru nie jest wystarczająco dobra, abym mógł je wystarczająco zróżnicować.

Jeśli jest jakaś różnica, wydaje się, że ma to coś wspólnego z, jak sugeruje nazwa, reagowaniem na zmiany danych. Oczywiście, Reactive Cocoa (i Rx w C #) mają koncepcję tworzenia sygnałów, które są wyzwalane przy zmianach danych i mogą być używane do ciągłej modyfikacji wartości w czasie.

Czy to różnica? Jeśli nie, co to jest?

(Przepraszam za słabe tagowanie, nie mogę znaleźć odpowiednich tagów i nie mogę ich jeszcze utworzyć - zaktualizuj tagi, aby były bardziej odpowiednie, jeśli możesz).

Danpalmer
źródło
2
„Out of the Tar Pit” nie przedstawia koncepcji funkcjonalnego programowania reaktywnego - to tylko dobra lektura, aby zrozumieć, dlaczego stan jest szkodliwy. Większość z nich dotyczy czystych FP, FRelP i FReaP.
Justin Spahr-Summers

Odpowiedzi:

5

Reakcja może promować zmianę bez angażowania modelu relacyjnego. C = A + B Zmiana A i / lub B i C zareagują na zmianę (ale może skończyć z tą samą wartością). Na str. 42

Podejście funkcjonalnego programowania relacyjnego (FRP16) wywodzi swoją nazwę od faktu, że podstawowe elementy systemu (logika i stan zasadniczy) oparte są na programowaniu funkcjonalnym i modelu relacyjnym (patrz rysunek 2).

przypis 16

Nie należy mylić go z funkcjonalnym programowaniem reaktywnym [EH97], które w rzeczywistości ma pewne podobieństwa do tego podejścia, ale nie ma wewnętrznego nacisku na relacje ani model relacyjny

JeffO
źródło
O, rozumiem. Wydaje się, że istnieje wiele skrzyżowań z reaktywnymi ramami, o których wspomniałem i Funkcjonalnym Programowaniem Relacyjnym, z pewnością istnieją pewne koncepcje, ale również czerpią one swoje koncepcje sygnałów z Zachowań i Wydarzeń z drugiego artykułu.
danpalmer
3
Crossover jest głównie na poziomie czystego FP. Relacyjne i reaktywne paradygmaty tak naprawdę nie mają ze sobą wiele wspólnego.
Justin Spahr-Summers