{-# LANGUAGE NoImplicitPrelude #-}
module Synthesizer.State.Filter.Recursive.Integration where
import qualified Synthesizer.State.Signal as Sig
import qualified Synthesizer.Causal.Process as Causal
import qualified Algebra.Additive as Additive
import NumericPrelude.Numeric
import NumericPrelude.Base
{-# INLINE run #-}
run :: Additive.C v => Sig.T v -> Sig.T v
run =
Sig.crochetL (\x acc -> let y = x+acc in Just (y,y)) zero
{-# INLINE runInit #-}
runInit :: Additive.C v => v -> Sig.T v -> Sig.T v
runInit = Sig.scanL (+)
{-# INLINE causal #-}
causal :: Additive.C v => Causal.T v v
causal = Causal.scanL1 (+)
{-# INLINE causalInit #-}
causalInit :: Additive.C v => v -> Causal.T v v
causalInit = Causal.scanL (+)