Programmazione reattiva / relazionale funzionale: c'è differenza?


12

Sto usando Reactive Cocoa (di GitHub), un'API di programmazione reattiva funzionale da utilizzare con le librerie Cocoa da un po 'di tempo, ma ho appena letto "Out of the Tar Pit" , il documento che presumibilmente presenta i concetti alla base, e sono un po 'confuso.

Il documento presenta (come ho capito bene) la programmazione relazionale funzionale , in cui vengono create relazioni tra i dati con condizioni che dovrebbero essere applicate dal sistema FRP per ridurre la quantità di logica e stato "accidentali" necessari.

La mia domanda è: questi due concetti - FR (attivo) P e FR (elazionale) P sono essenzialmente la stessa cosa (con il primo è solo un'implementazione del secondo) o c'è una differenza fondamentale tra i due? Purtroppo al momento la mia conoscenza della zona non è abbastanza buona per me per differenziarli abbastanza.

Se c'è una differenza, sembra che abbia a che fare con, come suggerisce il nome, reagire ai cambiamenti nei dati. Certamente, Reactive Cocoa (e Rx in C #) hanno il concetto di creare segnali che si innescano su cambiamenti nei dati e possono essere usati per modificare continuamente un valore nel tempo.

È questa la differenza? In caso contrario, cos'è?

(Per favore, scusa la scarsa codifica, non riesco a trovare i tag pertinenti e non riesco ancora a crearli - aggiorna i tag a qualcosa di più appropriato se puoi.)


2
"Out of the Tar Pit" non presenta i concetti alla base della programmazione reattiva funzionale - è solo una buona lettura per capire perché lo stato è dannoso. La maggior parte si applica a FP, FRelP e FReaP puri.
Justin Spahr-Summers,

Risposte:


5

Una reazione può propagare un cambiamento senza coinvolgere un modello relazionale. C = A + B La modifica A e / o B e C reagiranno alla modifica (ma potrebbero finire con lo stesso valore). A pag. 42

L'approccio della programmazione funzionale relazionale (FRP16) deriva il suo nome dal fatto che i componenti essenziali del sistema (la logica e lo stato essenziale) sono basati sulla programmazione funzionale e sul modello relazionale (vedi Figura 2).

nota 16

Da non confondere con la programmazione reattiva funzionale [EH97] che ha in effetti alcune somiglianze con questo approccio, ma non ha alcuna attenzione intrinseca alle relazioni o al modello relazionale


Ah capisco Sembra che ci siano molti incroci con i framework reattivi che ho citato e la Programmazione relazionale funzionale, certamente ci sono alcuni dei concetti presenti, ma traggono anche i loro concetti di segnali dai comportamenti e dagli eventi di quel secondo articolo.
danpalmer,

3
Il crossover è principalmente a livello di FP puro. I paradigmi relazionali e reattivi non hanno molto in comune.
Justin Spahr-Summers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.