{-# LANGUAGE Arrows #-} module LiveCoding.Cell.Util where -- base import Control.Arrow -- essence-of-live-coding import LiveCoding.Cell import LiveCoding.Cell.Feedback -- | Sum all past inputs, starting by the given number sumFrom :: Monad m => Integer -> Cell m Integer Integer sumFrom n0 = feedback n0 $ proc (n, acc) -> returnA -< (acc, acc + n) -- | Count the number of ticks, starting at 0 count :: Monad m => Cell m a Integer count = arr (const 1) >>> sumC