有没有办法让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
约束。解决方案和/或建议将不胜感激。
答案 0 :(得分:4)
不能使用MonadIO
完成,但可以使用MonadUnliftIO
完成,请参阅here。
并非所有具有MonadIO
实例的实例都具有MonadUnliftIO
实例,但根据您的需要,这可能就足够了。