Programação Reativa / Relacional Funcional - Existe alguma diferença?

12

Estou usando o Reactive Cocoa (do GitHub), uma API de programação funcional reativa para uso com as bibliotecas do Cocoa há algum tempo, mas acabei de ler "Out of the Tar Pit" , o artigo que supostamente apresenta os conceitos por trás dele, e estou um pouco confuso.

O artigo apresenta (como eu o entendo) a Programação Relacional Funcional , onde as relações entre os dados são criadas com condições que devem ser impostas pelo sistema FRP para reduzir a quantidade de lógica e estado 'acidental' necessários.

Minha pergunta é: esses dois conceitos - FR (ativo) P e FR (elacional) P são essencialmente a mesma coisa (com o primeiro sendo apenas uma implementação do último) ou há uma diferença central entre os dois? Infelizmente, no momento, meu conhecimento da área não é bom o suficiente para diferenciá-los o suficiente.

Se houver uma diferença, parece haver algo a ver com, como o nome sugere, reagir a alterações nos dados. Certamente, cacau reativo (e Rx em C #) têm o conceito de criar sinais que são acionados por alterações nos dados e podem ser usados ​​para modificar continuamente um valor ao longo do tempo.

Essa é a diferença? Se não, o que é?

(Desculpe a marcação incorreta, não consigo encontrar tags relevantes e ainda não consigo criá-las. Atualize as tags para algo mais apropriado, se possível.)

danpalmer
fonte
2
"Out of the Tar Pit" não apresenta os conceitos por trás da programação reativa funcional - é apenas uma boa leitura para entender por que o estado é prejudicial. A maior parte se aplica a FP, FRelP e FReaP puros.
Justin Spahr-Summers

Respostas:

5

Uma reação pode propagar uma mudança sem envolver um modelo relacional. C = A + B A alteração A e / ou B e C reagirão à alteração (mas podem terminar com o mesmo valor). Na p. 42.

A abordagem da programação relacional funcional (FRP16) deriva seu nome do fato de que os componentes essenciais do sistema (a lógica e o estado essencial) são baseados na programação funcional e no modelo relacional (veja a Figura 2).

nota 16

Não deve ser confundido com a programação reativa funcional [EH97], que de fato tem algumas semelhanças com essa abordagem, mas não tem foco intrínseco nas relações ou no modelo relacional

JeffO
fonte
Ah entendo. Parece haver muita contradição com as estruturas reativas que mencionei e com a Programação Relacional Funcional, certamente existem alguns dos conceitos presentes, mas eles também extraem seus conceitos de sinais dos comportamentos e eventos desse segundo artigo.
Danpalmer 12/04
3
O crossover é principalmente no nível de FP puro. Os paradigmas relacionais e reativos realmente não têm muito em comum.
Justin Spahr-Summers