zm-0.2: src/ZM/Util.hs
module ZM.Util(
proxyOf
-- *State Monad utilities
,runEnv
,execEnv
) where
import Control.Monad.Trans.State
import qualified Data.Map as M
import Data.Proxy
-- |Return the proxy for the type of the given value
proxyOf :: a -> Proxy a
proxyOf _ = Proxy ::Proxy a
----------- State Utils
-- |Run a State monad with an empty map as environment
runEnv :: State (M.Map k a1) a -> (a, M.Map k a1)
runEnv op = runState op M.empty
-- |Exec a State monad with an empty map as environment
execEnv :: State (M.Map k a1) a -> M.Map k a1
execEnv op = execState op M.empty