有什么办法可以制作forkIO
优雅吗?
import Control.Monad.IO.Class (MonadIO)
import Control.Concurrent (ThreadId)
-- | Is this possible?
forkIO :: MonadIO m => m () -> m ThreadId
forkIO = undefined
我正在尝试使用一些 mtl
从函数内调用它单子(monad)类约束。我知道lifted-base
但我不想有额外的MonadBaseControl IO
约束在我的程序中冒出来。解决方案和/或建议将不胜感激。
最佳答案
用 MonadIO
无法完成,但可以用 MonadUnliftIO
完成,参见here .
并非所有具有 MonadIO
实例的东西也具有 MonadUnliftIO
实例,但根据您的需要,这可能就足够了。
关于haskell - 将 forkIO 推广到 MonadIO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50581052/