haskell - 有相当于步进器的网线吗?

标签 haskell frp netwire

Reactive-banana 有一个名为 stepper 的函数(类型为 MonadMoment m => a -> Event a -> m (Behavior a)),用于转换事件进入一种行为,其中行为的值是最后一个事件的值,如果尚未发生事件,则为初始值。

在 Conal Elliott 的一次演讲中(我不记得他的名字了),他将其描述为事件和行为的基本运算之一。但是我在netwire中找不到类似的功能。由于我对 netwire 的了解有限,我希望它具有类型:

a -> Wire s e m(事件 a)a

  • netwire 有同等功能吗?
  • 如果不能,是否有任何原因无法做到这一点?
  • 是否有类似的可能,即将事件转化为行为的方法?

最佳答案

我正在寻找的函数名为 hold, in Control.Wire.Interval .

这不需要初始值,因为在接收到第一个事件之前线路会被禁止。如果需要这种行为,可以像这样实现

stepper init = hold <|> pure init

关于haskell - 有相当于步进器的网线吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40161442/

相关文章:

haskell - 箭头 FRP 中的连续信号切换

haskell - 在回合制 ascii 游戏中使用 FRP(尤其是响应式(Reactive)香蕉)是否有意义?

haskell 网络: wires of wires

haskell - Netwire 相互依赖的电线

haskell - 使用 netwire 的周期性与 at 电线

networking - 1个处理 channel ,2个同类型IO源

performance - Haskell——产生更少 Spark 的平行映射

haskell - stack.yaml 文件和 .cabal 文件的区别?

nomenclature - 我需要一个类似 'debounce' 的名称,但不完全相同

haskell - 存在类型。为异构 map 编写类的实例