【发布时间】:2021-05-22 01:13:27
【问题描述】:
我目前正在阅读WebSharper 的文档。在the section about FRP 中,它声明:
函数响应式编程 (FRP) 通常为事件流提供 Event 类型,为时变值提供 Behavior 类型,并提供有用的组合器。
...
但是,目前我们决定避免实施 FRP。相反,我们专注于功能的子集,定义类似于行为的随时间变化的视图值,但不支持实时采样。事件流留给用户使用回调或第三方库来处理。这是对 FRP 的极大简化,并且更容易有效地实施。
随着 JavaScirpt 中的弱指针变得可用,这个决定可能会被修改,特别是考虑到 OCaml React 的成功。
在不久的将来,我们打算提供并发 ML 组合器,以更好地支持处理事件流并改进组件的组合。
但是,我不确定此处描述的“事件类型”和“行为类型”之间究竟有什么区别。我在 Google 上搜索了一些文章/教程,但它们似乎也不是很明确。
我不确定在 WebSharper 的实现中没有“事件”会错过什么。
对不起,如果这个问题听起来很基础。我不熟悉 FRP 相关的概念。
--
编辑:我想我在FRP - Event streams and Signals - what is lost in using just signals? 找到了我对没有事件流的问题的疑问的答案。要点是:
-
事件流允许累积更新,而行为只能取决于观察到的元素的当前值。
-
如果事件和行为都实现了,它们允许在系统内递归。
【问题讨论】:
标签: f# reactive-programming frp websharper websharper.ui.next