úÎ /=Spark off a new thread to run the monadic computation passed ' as the first argument, and return the  of the newly  created thread. ?The new thread will run the computation using the same monadic  context as the parent thread. >As a convenience, this forkIO accepts a computation returning < any value, not just unit. This value is discarded when the  computation terminates. 8  !"#$%&'()*+,-./012345678      !"#$#%#&#'#(#)#*#+#,-./0/1/2/3/456789:;:<:=:>:?:@:A:B:CDforkable-monad-0.1.1Control.Concurrent.Forkable ForkableMonadforkIObase GHC.Conc.SyncThreadIdControl.ConcurrentthreadWaitWritethreadWaitReadrunInUnboundThreadrunInBoundThreadisCurrentThreadBoundforkOSnmergeIOmergeIOrtsSupportsBoundThreadsControl.Concurrent.SampleVarisEmptySampleVarwriteSampleVar readSampleVaremptySampleVar newSampleVarnewEmptySampleVar SampleVarControl.Concurrent.QSemN signalQSemN waitQSemNnewQSemNQSemNControl.Concurrent.QSem signalQSemwaitQSemnewQSemQSemControl.Concurrent.ChanwriteList2ChangetChanContents isEmptyChan unGetChandupChanreadChan writeChannewChanChan GHC.Conc.IO threadDelayControl.Concurrent.MVar modifyMVar modifyMVar_withMVarswapMVarreadMVaryield myThreadIdthrowTo killThreadforkIOUnmaskedGHC.MVaraddMVarFinalizer isEmptyMVar tryPutMVar tryTakeMVarputMVartakeMVarnewMVar newEmptyMVarMVar