module Data.Label.MonadLib ( modM , setM , getM ) where import Data.Label ((:->)) import MonadLib.Monads import qualified Data.Label as L modM :: StateM m f => (f :-> a) -> (a -> a) -> m () modM l f = liftM (L.modify l f) get >>= set setM :: StateM m f => (f :-> a) -> a -> m () setM l a = liftM (L.set l a) get >>= set getM :: StateM m f => (f :-> a) -> m a getM l = liftM (L.get l) get