{-# LANGUAGE NoImplicitPrelude #-} module Synthesizer.Causal.Cut where import qualified Synthesizer.Causal.Process as Causal import Data.Maybe.HT (toMaybe, ) import Control.Monad.Trans.State (StateT(StateT), ) -- import qualified Prelude as P import NumericPrelude.Base import NumericPrelude.Numeric {-# INLINE take #-} take :: Int -> Causal.T a a take = Causal.fromStateMaybe (\x -> StateT (\i -> toMaybe (i>0) (x, pred i)))