schemas-0.4.0.0: src/Schemas/Delay.hs
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveFunctor #-}
module Schemas.Delay where
import Control.Monad.Trans.Iter
import Numeric.Natural
type DelayT m = IterT m
type Delay = Iter
lift :: Monad m => Iter a -> IterT m a
lift = liftIter
runDelay :: Monad m => Natural -> DelayT m a -> m (Maybe a)
runDelay n = retract . cutoff (fromIntegral n)
runDelayUnbounded :: Monad m => DelayT m a -> m a
runDelayUnbounded = retract