{-# 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)))