我读过维基百科上关于响应式编程的文章。我还读过一篇关于函数式响应式编程的小文章。这些描述相当抽象。

函数式响应式编程(FRP)在实践中意味着什么? 反应式编程(相对于非反应式编程?)由什么组成?

我的背景是命令式/OO语言,所以与此范例相关的解释将受到赞赏。


当前回答

对我来说,这是关于符号的2个不同的含义=:

在数学中,x = sint的意思是,x是sint的另一个名字。所以写x + y和sin(t) + y是一样的。函数式响应式编程在这方面就像数学:如果你写x + y,它是用t在使用时的任何值来计算的。 在类c编程语言(命令式语言)中,x = sin(t)是一个赋值:它意味着x存储在赋值时所取的sin(t)的值。

其他回答

Paul Hudak的书,The Haskell School of Expression,不仅是对Haskell的很好的介绍,而且还花了相当多的时间在FRP上。如果你是FRP的初学者,我强烈推荐它让你了解FRP是如何工作的。

还有一本看起来像是这本书(2011年出版,2014年更新)的新重写版——哈斯克尔音乐学院。

对我来说,这是关于符号的2个不同的含义=:

在数学中,x = sint的意思是,x是sint的另一个名字。所以写x + y和sin(t) + y是一样的。函数式响应式编程在这方面就像数学:如果你写x + y,它是用t在使用时的任何值来计算的。 在类c编程语言(命令式语言)中,x = sin(t)是一个赋值:它意味着x存储在赋值时所取的sin(t)的值。

我在Clojure reddit上找到了一个关于FRP的视频。即使你不懂Clojure,也很容易理解。

这是视频:http://www.youtube.com/watch?v=nket0K1RXU4

这是视频后半段提到的来源:https://github.com/Cicayda/yolk-examples/blob/master/src/yolk_examples/client/autocomplete.cljs

Conal Elliott的论文《Simply efficient functional reactivity》(直接PDF, 233 KB)是一个相当好的介绍。相应的库也可以工作。

这篇论文现在被另一篇论文取代,推拉函数式反应性编程(直接PDF, 286 KB)。

Andre Staltz的这篇文章是迄今为止我所见过的最好、最清楚的解释。

以下是文章中的一些引述:

响应式编程是使用异步数据流进行编程。 最重要的是,你会得到一个神奇的功能工具箱来组合、创建和过滤任何这些流。

下面是文章中精彩图表的一个例子: