【问题标题】:Time difference in the reactimate (sense) function in YampaYampa 中反应(感觉)功能的时差
【发布时间】:2012-07-04 17:11:09
【问题描述】:

我现在正在学习 Haskell 和 Yampa,并且有一个关于 reactimate 函数的问题。

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

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

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

【问题讨论】:

    标签: haskell functional-programming reactive-programming yampa


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2014-11-03
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      相关资源
      最近更新 更多