io-sim icon indicating copy to clipboard operation
io-sim copied to clipboard

Provide MonadTraceMVar

Open coot opened this issue 3 years ago • 0 comments

First provide MonadInspectMVar which is the analogy of MonadInspectSTM but for MVars.

class ( MonadMVar m
      , Monad (InspectMonadMVar m)
      )
    => MonadInspectMVar m where
    type InspectMonadMVar m :: Type -> Type
    inspectMVar :: proxy m -> MVar m a -> InspectMonadMVar m (Maybe a)

Then provide a type class

class MonadTraceMVar m where
  traceMVarIO :: proxy 
              -> MVar m a
              -> (Maybe (Maybe a) -> Maybe a -> InspectMonad m TraceValue)
              -> m ()

and two instances: MonadTraceMVar IO and MonadTraceMVar (IOSim s).

Under this proposal, I also suggest we also rename the associated type family InspectMonad of MonadInspectSTM as InsepctMonadSTM.

coot avatar Aug 18 '22 09:08 coot