【发布时间】: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