一応mapAccumを使えばコンビネータの枠組みの中でイベントを遅延させる関数は作れる。

delay :: a -> Event a -> Event a
delay x e = fst $ mapAccum x $ (\cur prev -> (prev, cur)) <$> e

イベントをe = [1, 2, 3, ..]とすると
delay 0 e = [0, 1, 2, 3, ..]
って感じになる。
これを少し改造してキューにすればN個前のイベントの値を取ることもできる。
もしくは非効率かもしれないけど、
delayN [] = id
delayN (x : xs) = delay x .delayN xs
とすれば同じものが作れる。


まぁでも、reactive-bananaはいくら初心者向けに機能を絞ってると言っても、
コンビネータが足りなすぎて正直おもちゃの域を出ないのが俺の印象…。