7

私は現在 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 はそれを処理する良い方法ですか?

4

1 に答える 1

1

reactimateが時間デルタ自体を計算しない理由は、これが1つの特定の時間の概念をハードコーディングするためだと思います。10年間などのポートフォリオリスクをシミュレートしたいとします。時間デルタの解決は1日である必要があります。そうは言っても、コードで同じ手法を使用したにもかかわらず、Iorefのことはちょっとハッキーに見えることに同意します。

于 2012-07-21T15:26:06.103 に答える