module Yael.Eff.Data where import Yael.Eff newtype Data a m = Data { _getData :: a } getData :: (HasEff (Data a) r m) => EffT r m a getData = withEffT $ \Data{_getData} -> return _getData localData :: (HasEff (Data a) r m) => (a -> a) -> EffT r m x -> EffT r m x localData f = localEffT $ Data . f . _getData