7
我正在學習Haskell和Yampa,並且有關於反應函數的問題。Yampa中反應(有意義)函數的時間差異
reactimate :: IO a -- init
-> (Bool -> IO (DTime, Maybe a)) -- sense
-> (Bool -> b -> IO Bool) -- actuate
-> SF a b -- signal function
-> IO()
正如你可以在類型簽名看,輸出爲傳感功能的一部分功能的當前和以前的通話之間的時間差。在我看到的例子中,這個時間差是在意義內部「手動」計算的,使用IORef來保持前一次調用的值。
看起來很奇怪,你必須跟蹤使用外部狀態的時間差,爲什麼這個計算在反應函數中完成? IORef是一種處理它的好方法嗎?