私はネットワイヤーの使用を検討してきましたが、実際の時間に依存しない一連のワイヤーを介してインスタントをポンピングする方法がわかりません。つまり、タイプのワイヤーとタイプWire e m a b
の変数を[(Time, a)]
取得して、タイプの何かを取り戻す方法はあり[b]
ますか?例のすべては、リアルタイムクロックでインスタントを生成することを目的としているようです。
1 に答える
2
Control.Wire.Session
モジュールを調べてください。そこには、独自の時計を作成するためのユーティリティがあります。Session
特に、データ型とgenSession
ヘルパー関数を調べる必要があります。これは時計についてです。2番目の問題は入力です。どの入力が1つの瞬間に渡されるかは、メインループの作成者によって決定されます。
実際、入力と組み合わせた時間のリストしかない場合は、時間デルタを計算してから、セッション機構全体をバイパスしてstepWire
(ではなく)直接使用することをお勧めします。stepSession
唯一の制約は、時間は常にタイプであるということですDouble
。例:
loop :: [(Time, a)] -> Time -> Wire e m a b -> m [Either e b]
loop [] _ _ = return []
loop ((t, x):ins) t' w' = do
(mx, w) <- stepWire w' (t - t') x
fmap (mx:) (loop ins t w)
テストされていないコードですが、動作するはずです。2番目の引数は開始時刻です。
于 2012-10-26T16:11:03.223 に答える