Я изучаю библиотеку mtl
и пытаюсь сделать некоторые из моих собственных MonadTransformers. Я проверял объявление Control.Monad.State.StateT
, и по всему коду я вижу этот синтаксис:
execStateT :: (Monad m) => StateT s m a -> s -> m s
execStateT m s = do
~(_, s') <- runStateT m s
return s'
Что означает этот операнд ~
?