úΑTwo ways a computation of type  a can end. :Spawn a concurrent computation. Produces an action which  demands a . :Spawn a concurrent computation. Produces an action which B demands the result. Any exception from the original computation 5 is re-thrown when and where the result is demanded. Given n, produces a function to wrap  actions.  No more than n( wrapped actions will be in progress at  one time. @Execute a separate thread of IO for each element of a list, and  collect results. The analogy to parMap* is misleading. The concurrent execution ? of these actions is non-deterministic and can affect results.  However, + is expected to be most useful for actions  which do not interact. <Execute a separate thread of IO for each element of a list. Results are discarded, but the  action does not + complete until all threads have finished. A concurrent version of  or (<*>) for . ?Spawns a thread for the right-hand action, while executing the ) left-hand action in the current thread.     spawn-0.3Control.Concurrent.SpawnResultspawnTryspawnpoolparMapIO parMapIO_|*|ghc-prim GHC.TypesIObase Control.Monadap