Functional programming 布莱克希思';s";功能性反应式编程“;手册,2.6.3章节说明

Functional programming 布莱克希思';s";功能性反应式编程“;手册,2.6.3章节说明,functional-programming,frp,sodiumfrp,Functional Programming,Frp,Sodiumfrp,第节介绍FRP流处理(使用)中的合并操作。这本书展示了流组合的下图,并说当事件通过流进入FRP逻辑时,它会导致在事务上下文中发生的一系列状态更改,所以所有更改都是原子的 事件流——sDeselect,sSelect(请参阅2个事件:“+”和“-”)源自UI控件,因为它们发生在同一FRP事务中,它们携带的事件被视为同时发生。然后书上说 合并实现必须将事件存储在临时存储器中 直到它知道它将不再接收任何输入时。然后它 输出一个事件:如果收到多个事件,则使用提供的 功能组合;否则,它将输出一个事件 收

第节介绍FRP流处理(使用)中的合并操作。这本书展示了流组合的下图,并说当事件通过流进入FRP逻辑时,它会导致在事务上下文中发生的一系列状态更改,所以所有更改都是原子的

事件流——
sDeselect
sSelect
(请参阅2个事件:“+”和“-”)源自UI控件,因为它们发生在同一FRP事务中,它们携带的事件被视为同时发生。然后书上说

合并实现必须将事件存储在临时存储器中 直到它知道它将不再接收任何输入时。然后它 输出一个事件:如果收到多个事件,则使用提供的 功能组合;否则,它将输出一个事件 收到


问题:什么时候“不再有输入”?合并函数如何知道这个时刻?它只是从给定图表上的第二个传入流中获取值的时间,还是我缺少smth?你能用一个更好的streams例子来说明它吗?

钠这样做的方式是将秩数分配给内存中FRP逻辑的有向图的结构,如果B依赖于a,那么B的秩将高于a。(在分配这些秩的图遍历中,循环被打断。)然后,这些数字被用作优先级队列中的优先级,低秩值首先被处理

在事件处理过程中,当优先级队列包含的优先级不低于合并的秩时,就知道合并不能有更多的输入数据,它将输出一个值