From bbc5cdea96b791eab8cd93878bfdb0061663abda Mon Sep 17 00:00:00 2001 From: Nathaniel Wesley Filardo Date: Tue, 30 Oct 2012 02:27:10 -0400 Subject: [PATCH] Add bracketState --- src/Dyna/XXX/MonadUtils.hs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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) -- 2.50.1