From ee48829edc8eca80833c031c214117e8db5eb3d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20B=C3=A4renz?= Date: Wed, 29 Nov 2023 14:20:39 +0100 Subject: [PATCH] CHERRY erase SN in step to Rhine, but Rhine still isn't an Arrow --- rhine/src/FRP/Rhine/SN/Free.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/rhine/src/FRP/Rhine/SN/Free.hs b/rhine/src/FRP/Rhine/SN/Free.hs index 1a0c64501..42a80c84f 100644 --- a/rhine/src/FRP/Rhine/SN/Free.hs +++ b/rhine/src/FRP/Rhine/SN/Free.hs @@ -20,6 +20,7 @@ module FRP.Rhine.SN.Free ( currently, Rhine(..), eraseClockRhine, + rhine, flow, Clocks(..) ) @@ -288,13 +289,19 @@ par msf = feedback [] $ proc ((a, key), running) -> do data Rhine m td cls a b = Rhine { clocks :: Clocks m td cls - , sn :: FreeSN m cls a b + , erasedSN :: MSF (ReaderT (Tick cls) m) a b + } + +rhine :: Monad m => Clocks m td cls -> FreeSN m cls a b -> Rhine m td cls a b +rhine clocks sn = Rhine + { clocks + , erasedSN = eraseClockFreeSN sn } eraseClockRhine :: (Monad m, MonadSchedule m) => Rhine m td cls a b -> MSF m a b -eraseClockRhine Rhine {clocks, sn} = proc a -> do +eraseClockRhine Rhine {clocks, erasedSN} = proc a -> do ti <- runClocks clocks -< () - runReaderS (eraseClockFreeSN sn) -< (ti, a) + runReaderS erasedSN -< (ti, a) flow :: (Monad m, MonadSchedule m) => Rhine m td cls () () -> m () flow = reactimate . eraseClockRhine