Skip to content

Provide MonadTraceMVar #18

@coot

Description

@coot

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions