私はいくつかの入力データ型から出力データ型にストリームトランスフォーマを書きます。入力はユーザーによって行われるため、イベント間には時間があります。各入力はいくらかのリソースのロードを必要とするので、私は「未来を調べる」、すなわちすべての可能な入力を主計算に送り、その結果に基づいてリソースを事前ロードしたいと思う。オートマトンのように使用できるモナドはありますか?
現在、入力ごとに常に正確に1つの出力がありますが、最終的にこれを変更するのが面白くなる可能性があります。
Ross Patersonのオートマトントランスで実装するのに成功しました。私のソリューションが最適であるかどうかはわかりません。
- これを行うには良い例がありますか?おそらくテストコードでさえ?
- モナドでも達成できますか? (例?,説明それは不可能だ理由は?)
編集: もっと詳細のための呼び出しの後、私はここにコードを追加しました。今私はそれを(それは理解できない)削除し、いくつかの他の説明を追加します。私の質問は答えています。
私の意図は、矢印/ストリームトランスフォーマーに供給された各ユーザー入力の後にメインイベントループを停止させることでした。次に、現在のオートマトンの状態を保存し、可能なすべての入力(偽のイベント)を1つずつオートマトンに送信し、ロードする必要があるリソースを見てキャッシュします。次の実際のイベントの後、より良い応答性のためにキャッシュを使用します。主な計算はこれによって影響を受けるべきではありません。
回答は得られていませんが、繰り返しが役立つ場合があります。このライブラリを参照してください:http://hackage.haskell.org/package/enumerator ...しかし矢印は良い抽象的に見えます。もっと具体的には人々の答えに役立つでしょう。より具体的には、 – jberryman
+1。 – sclv