I'm studying the mtl
library and trying to do some MonadTransformers of my own. I was checking the Control.Monad.State.StateT
declaration, and across all the code, I see this syntax:
execStateT :: (Monad m) => StateT s m a -> s -> m s
execStateT m s = do
~(_, s') <- runStateT m s
return s'
What does this ~
operand mean?