Max*_*Max 5 functional-programming frp sodiumfrp
本节讲述FRP 流处理中的合并操作(使用Sodium 库)。本书展示了流组合的下图,并表示当事件通过流进入 FRP 逻辑时,它会导致在事务上下文中发生级联状态更改,因此所有更改都是原子的。
\n\n
事件流 - sDeselect,sSelect(参见 2 个事件:“+”和“-”)源自 UI 控件,因为它们发生在同一个 FRP 事务中,因此它们携带的事件被认为是同时发生的。然后书上说
\n\n\n合并实现必须将事件存储在临时存储中\n, 直到它知道\xe2\x80\x99 不再接收任何输入为止。然后它输出一个事件:如果它收到多个事件,则它使用提供的函数将它们组合起来;否则,它输出它收到的一个事件。
\n
问:什么时候是“不再有输入”的时候?merge 函数如何知道此时此刻?这只是它从给定图表上的第二个传入流获取值的时间还是我缺少什么?您能用更好的流示例来说明它吗?
\n小智 4
Sodium 这样做的方法是将等级编号分配给内存中保存的 FRP 逻辑有向图的结构,这样如果 B 依赖于 A,那么 B 的等级将高于 A 的等级。(分配这些等级的图形遍历中的循环被打破。)然后,这些数字将用作优先级队列中的优先级,首先处理低等级值。
在事件处理过程中,当优先级队列中不包含低于合并排名的数据时,就知道合并不能再有输入数据,并且会输出一个值。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |