tilia-0.0.1.0: corpora/vendored/other/cpp/same-guard-twice.hs
{-# LANGUAGE CPP #-}
{-# LANGUAGE RankNTypes #-}
module Terminal.Run (runFrame) where
import Control.Monad.ST (ST, runST)
import Terminal.Buffer (Buffer, freeze, shrink)
#if defined(ASSERTS)
import GHC.Stack (HasCallStack)
#endif
runFrame ::
#if defined(ASSERTS)
(HasCallStack) =>
#endif
(forall s. (Buffer s -> Int -> ST s Buffer) -> ST s Buffer) -> Buffer
runFrame act = runST (act (\buffer used -> shrink buffer used >> freeze buffer))