System.ZMQ4.MonadicrunZMQ:

此类型签名的含义是什么?

λ: :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/

10-10 16:26