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

答えて

1

私は、反応時間がデルタ自体を計算しない理由は、これが時間の特定の概念をハードコードすると考えています。 10年以上の期間にわたってポートフォリオのリスクをシミュレートするとしたら、時間デルタの解決は1日でなければならないとします。これは言われている、私は私のコードで同じテクニックを使用していますが、Iorefのものはハッキーのように見えることに同意します。