haskell - Yampa 中 react (感觉)功能的时差

标签 haskell functional-programming reactive-programming yampa

我目前正在学习 Haskell 和 Yampa,并且对 react 函数有疑问。

reactimate :: IO a -- init
      -> (Bool -> IO (DTime, Maybe a)) -- sense
      -> (Bool -> b -> IO Bool) -- actuate
          -> SF a b -- signal function
      -> IO ()

正如您在类型签名中看到的,感知函数的部分输出是函数的当前调用和上一次调用之间的时间差。在我看到的例子中,这个时间差是“手动”计算的,使用 IORef 来保持前一次调用的值。

您必须使用外部状态来跟踪时间差,这似乎很奇怪,为什么不在 reactimate 函数中进行此计算?
IORef 是处理它的好方法吗?

最佳答案

我认为 reactimate 不计算时间增量本身的原因是这会硬编码一个特定的时间概念。想象一下,您想模拟十年或类似的投资组合风险,您的时间增量分辨率应该是一天。话虽这么说,我同意 Ioref 的东西看起来有点 hacky,尽管我在我的代码中使用了相同的技术。

关于haskell - Yampa 中 react (感觉)功能的时差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11333166/

相关文章:

spring - 如何在Prometheus中公开webClient指标?

haskell - 结合状态和列表单子(monad)

javascript - Ramda.js 中镜头的无点组合

python - 通常使用 lambda 函数作为字符串过滤 Python 对象数组中的值

scala - Scalaz 中 *> 和 <* 的用途是什么

javascript - 延迟除特定项目外的所有项目

haskell - 为什么我不能用列表理解中的过滤条件来表达无限列表的限制?

haskell - 为什么我不能使用类型 `Show a => [Something -> a]` ?

haskell - Haskell 中的过滤器函数

java - RxJava 的 Observable.create 与 Observable.just(1).flatMap