]> hydra-www.ietfng.org Git - dyna2/commitdiff
Add bracketState
authorNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Tue, 30 Oct 2012 06:27:10 +0000 (02:27 -0400)
committerNathaniel Wesley Filardo <nwf@cs.jhu.edu>
Tue, 30 Oct 2012 06:27:10 +0000 (02:27 -0400)
src/Dyna/XXX/MonadUtils.hs

index 857b71e2cb1504cbdb93a0e7a7ee29b5140b2d1d..cb0349aa0a174500358db3e7e037d06792983520 100644 (file)
@@ -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)