-- | Nifty trick to allow each 'Pool' to allocate workers per concurrent
-- operation, while allowing 'Pool's to share workers.
newWorkerList :: IO WorkerList
newWorkerList = unsafeInterleaveIO $ do
    w  <- Worker.new
    ws <- newWorkerList
    return (WL w ws)

newWorkerList :: IO WorkerList
newWorkerList = unsafeInterleaveIO $ do
    w  <- Worker.new
    ws <- newWorkerList
    return (WL w ws)

newWorkerList = unsafeInterleaveIO $ do
    w  <- Worker.new
    ws <- newWorkerList
    return (WL w ws)
