Programación funcional reactiva / relacional: ¿hay alguna diferencia?

12

He estado usando Reactive Cocoa (por GitHub), una API de programación funcional reactiva para usar con las bibliotecas de Cocoa por un tiempo, pero acabo de leer "Out of the Tar Pit" , el documento que supuestamente presenta los conceptos detrás de él, y estoy un poco confundido

El documento presenta (según tengo entendido) la Programación Relacional Funcional , donde las relaciones entre los datos se crean con condiciones que el sistema FRP debería aplicar para reducir la cantidad de lógica y estado 'accidental' necesarios.

Mi pregunta es, ¿son estos dos conceptos: FR (eactivo) P y FR (elacional) P esencialmente lo mismo (siendo el primero una implementación de este último) o hay una diferencia central entre los dos? Desafortunadamente en este momento mi conocimiento del área no es lo suficientemente bueno como para diferenciarlos lo suficiente.

Si hay una diferencia, parece tener algo que ver, como su nombre lo indica, con la reacción a los cambios en los datos. Ciertamente, Reactive Cocoa (y Rx en C #) tienen el concepto de crear señales que se activan con los cambios en los datos y pueden usarse para modificar continuamente un valor a lo largo del tiempo.

¿Es esta la diferencia? Si no, ¿qué es?

(Por favor, disculpe el mal etiquetado, no puedo encontrar etiquetas relevantes y aún no puedo crearlas; actualice las etiquetas a algo más apropiado si puede).

danpalmer
fuente
2
"Fuera del pozo de alquitrán" no presenta los conceptos detrás de la programación reactiva funcional, es solo una buena lectura para entender por qué el estado es perjudicial. La mayor parte se aplica a FP puro, FRelP y FReaP.
Justin Spahr-Summers

Respuestas:

5

Una reacción puede propagar un cambio sin involucrar un modelo relacional. C = A + B Cambiar A y / o B y C reaccionarán al cambio (pero podrían terminar con el mismo valor). En P. 42

El enfoque de la programación funcional relacional (FRP16) deriva su nombre del hecho de que los componentes esenciales del sistema (la lógica y el estado esencial) se basan en la programación funcional y el modelo relacional (ver Figura 2).

nota 16

No debe confundirse con la programación funcional reactiva [EH97] que de hecho tiene algunas similitudes con este enfoque, pero no tiene un enfoque intrínseco en las relaciones o el modelo relacional

JeffO
fuente
Ah, ya veo. Parece que hay muchos cruces con los marcos reactivos que mencioné y la Programación Relacional Funcional, ciertamente hay algunos de los conceptos presentes, pero también extraen sus conceptos de señales de los Comportamientos y Eventos de ese segundo artículo.
danpalmer
3
El cruce es principalmente al nivel de FP puro. Los paradigmas relacionales y reactivos no tienen mucho en común.
Justin Spahr-Summers