module Data.Record.Label.MonadLib ( module L
                                  , modM
                                  , setM
                                  , getM
                                  ) where

import Data.Record.Label as L hiding (modM, setM, getM)
import MonadLib.Monads

modM :: StateM m f => (f :-> a) -> (a -> a) -> m ()
modM l f = liftM (modL l f) get >>= set

setM :: StateM m f => (f :-> a) -> a -> m ()
setM l a = liftM (setL l a) get >>= set

getM :: StateM m f => (f :-> a) -> m a
getM l = liftM (getL l) get