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/