| 1 | import Data.Monoid |
|---|
| 2 | import System.IO |
|---|
| 3 | import FRP.Reactive |
|---|
| 4 | import FRP.Reactive.Internal.Reactive |
|---|
| 5 | import FRP.Reactive.Internal.Future |
|---|
| 6 | |
|---|
| 7 | |
|---|
| 8 | printFutures :: Show a => Event a -> IO () |
|---|
| 9 | printFutures e | isNeverE e = print "never-never" |
|---|
| 10 | printFutures (Event (Future (t,a `Stepper` e))) = print (Future (t,a)) >> printFutures e |
|---|
| 11 | |
|---|
| 12 | joinE :: Event (Event a) -> Event a |
|---|
| 13 | joinE (Event u) = Event (u >>= eFuture . g) |
|---|
| 14 | where |
|---|
| 15 | g (v `Stepper` vs) = v `mappend` joinE vs |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | main :: IO () |
|---|
| 19 | main = do |
|---|
| 20 | hSetBuffering stdout NoBuffering |
|---|
| 21 | let ev1 = countE_ $ atTimes [2,2.5,3.2,3.7] |
|---|
| 22 | allE = fmap atTime ev1 |
|---|
| 23 | printFutures ev1 |
|---|
| 24 | printFutures $ joinE allE |
|---|