从System.ZMQ4.Monadic看runZMQ
:
此类型签名的含义是什么?
λ: :t runZMQ
runZMQ
:: transformers-0.4.2.0:Control.Monad.IO.Class.MonadIO m =>
(forall z. ZMQ z a) -> m a
特别是,我不了解
forall
。 最佳答案
从ZQM docs:
ZMQ monad是在ST之后建模的,并封装了一个Context。它使用未实例化的类型变量z来区分runZMQ的不同调用,并防止在其范围之外无意使用Socket。 cf. John Launchbury和Simon Peyton Jones的Lazy Functional State Threads的论文。
因此,z
参数的作用类似于s
中的ST s a
参数。
Haskell Wiki对ST monad的一种解释是:
https://wiki.haskell.org/Monad/ST
关于haskell - 在签名中了解`System.ZMQ4.Monadic`的`forall`,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37500852/