2013-10-29 14 views
8

私はreactive-bananaの文書を精査しており、明示的な時間遅れを指定する方法を見つけることができません。例えば、私はEvent t aを受け取り、その発生をすべて1秒後にシフトしたいとします。今から1秒後に発生するイベントを取得します(Moment t)。またはそのようなもの。反応性バナナで明示的な遅延が現れるか?そうでない場合、ユーザーはどのように実装しますか?反応バナナ時間遅れ

答えて

4

ベンは示しているとおり、これは正しいです:react-bananaは時間と遅延の組み込みの概念ではありません。

主な理由は、論理的な時間とリアルタイムが一致することを保証することが難しいということです。マウスクリックが、まだ計算できなかったイベントの論理時間の前にリアルタイムで発生した場合、つまりその実時間がその論理時間より遅れている場合はどうなりますか?

ただし、外部タイマーイベントを使用して時間を処理することは、まだ可能です。 Wave.hsの例をご覧ください。

3

私はエキスパートではありませんが、まさにこのニーズのあるプログラムには以前の反応型バナナを使用しています(残念ながら、現時点ではコードは手元にありません)。

私はあなたが常に暗黙的に抽象時間のいくつかの並べ替えを扱っているので、明示的な遅延は、超自然内の反応性バナナの枠組みに適合しないことを考える。特定の間隔で遅らせることは、現実世界の時間概念を扱うことを必要とする。 union event (delay 1.0 event)のようなものは、type Event a = [Maybe a][a, b, a, b]または[a, a, b, b]のはずの正式なモデルという意味では意味がありません。私が思っていたように、問題は、実行時の詳細を考慮せずに、これら2つのうちのどれが結果が不明であるかということです。その後、

しかし、あなたは(明らかに、しないメインスレッドで)それはしばらく寝延期したいイベントにIOアクションを配線することで、「周りの」反応性バナナの枠組みそれを行うことができますし、さまざまなイベントを発生します。私は、新しい遅延イベントを得るために、NetworkDescriptionモナド(これはMomentモナドが存在する前であった)から呼び出せる関数で、すべての論理をラップすることができたと信じています。

関連する問題