将forkIO推广到MonadIO

时间:2018-05-29 09:35:44

标签: haskell

有没有办法让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约束。解决方案和/或建议将不胜感激。

1 个答案:

答案 0 :(得分:4)

不能使用MonadIO完成,但可以使用MonadUnliftIO完成,请参阅here

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