From: Nathaniel Wesley Filardo Date: Tue, 30 Oct 2012 06:27:10 +0000 (-0400) Subject: Add bracketState X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=bbc5cdea96b791eab8cd93878bfdb0061663abda;p=dyna2 Add bracketState --- diff --git a/src/Dyna/XXX/MonadUtils.hs b/src/Dyna/XXX/MonadUtils.hs index 857b71e..cb0349a 100644 --- a/src/Dyna/XXX/MonadUtils.hs +++ b/src/Dyna/XXX/MonadUtils.hs @@ -1,8 +1,20 @@ -module Dyna.XXX.MonadUtils(incState) where +{-# LANGUAGE FlexibleContexts #-} + +module Dyna.XXX.MonadUtils(bracketState, incState) where import Control.Monad.State -incState :: State Int Int +bracketState :: (MonadState s m) => s -> m t -> m (t, s) +bracketState bs m = do + s <- get + put bs + r <- m + s' <- get + put s + return (r, bs) + + +incState :: (MonadState Int m) => m Int incState = do s <- get put $! (s+1)