功能反应/关系编程–有区别吗?


12

我一直在使用Reactive Cocoa(由GitHub提供),这是一种用于Cocoa库的功能性反应式编程API,现在已经使用了一段时间,但是我刚刚阅读了“ Out of the Tar Pit”,据称该论文介绍了其背后的概念,我有些困惑。

本文介绍了(据我所知)功能关系编程,其中数据之间的关系是由FRP系统应强制执行的条件创建的,以减少所需的“偶然”逻辑和状态。

我的问题是,这两个概念-FR(eactive)P和FR(elational)P本质上是同一件事(前者只是后者的实现),还是两者之间存在核心区别?不幸的是,目前我对该领域的了解还不足以让我足够区分它们。

如果存在差异,顾名思义,这似乎与数据更改有关系。当然,反应性可可粉(和C#中的Rx)具有创建信号的概念,该信号在数据变化时触发,并且可用于随时间连续修改值。

这有区别吗?如果没有,那是什么?

(请原谅不良标签,我找不到相关标签,也无法创建它们-如果可以的话,请将标签更新为更合适的标签。)


2
“ Out of the Tar Pit”没有介绍功能性反应式编程背后的概念,这是理解状态为何有害的很好的读物。大部分适用于纯FP,FRelP和FReaP。
Justin Spahr-Summers

Answers:


5

反应可以在不涉及关系模型的情况下促进变更。C = A + B更改A和/或B和C将对更改做出反应(但最终可能具有相同的值)。 在第 42

功能关系编程方法(FRP16)的名称源于以下事实:系统的基本组件(逻辑和基本状态)基于功能编程和关系模型(参见图2)。

脚注16

不要与函数式反应式编程[EH97] 混淆,后者实际上与该方法有些相似,但是对关系或关系模型没有内在的关注。


啊,我明白了。我提到的反应性框架和函数关系编程似乎有很多交叉之处,当然存在一些概念,但是它们也从第二篇论文的“行为和事件”中得出了信号的概念。
danpalmer

3
交叉大部分在纯FP级别。关系和反应范例实际上并没有太多共通之处。
贾斯汀·斯帕夏
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.