首页 > 解决方案 > 将 forkIO 推广到 MonadIO

问题描述

有什么方法可以让forkIO优雅吗?

import Control.Monad.IO.Class (MonadIO)
import Control.Concurrent (ThreadId)

-- | Is this possible?
forkIO :: MonadIO m => m () -> m ThreadId
forkIO = undefined

我正在尝试使用一些mtlmonad 类约束从函数中调用它。我知道,lifted-base但我不想MonadBaseControl IO在我的程序中出现额外的约束。解决方案和/或建议将不胜感激。

标签: haskell

解决方案


不能用 来完成MonadIO,但可以用 来完成MonadUnliftIO,见这里

并非所有具有MonadIO实例的东西也都有MonadUnliftIO实例,但根据您的需要,这可能就足够了。


推荐阅读