[英]What does `~` mean in Haskell?
我正在研究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'
这个~
操作数是什么意思?
对于正常的模式匹配,需要评估应该匹配的值,以便可以将其与模式进行比较。
~
表示惰性模式匹配:只是假设该值将匹配模式。 如果实际使用了匹配变量的值,则匹配仅在稍后完成。
它相当于
execStateT m s = do
r <- runStateT m s
return (snd r)
或者
execStateT m s =
runStateT m s >>= return . snd
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.