私は現在 Haskell と Yampa を学んでおり、反応機能について質問があります。
reactimate :: IO a -- init
-> (Bool -> IO (DTime, Maybe a)) -- sense
-> (Bool -> b -> IO Bool) -- actuate
-> SF a b -- signal function
-> IO ()
型シグネチャからわかるように、sense 関数の出力の一部は、関数の現在の呼び出しと前回の呼び出しの間の時間差です。私が見た例では、この時間差は意味の中で「手動で」計算され、IORef を使用して前の呼び出しの値を保持します。
外部状態を使用して時間差を追跡しなければならないのは奇妙に思えますが、なぜこの計算が反応関数で行われないのですか? IORef はそれを処理する良い方法ですか?