úÎ>„8W>      !"#$%&'()*+,-./0123456789:;<=None+234M‹For internal errors. If a procedure throws this, some threads it created may still be running. It is thrown separately from ExceptionList. &For exceptions caused by caller code. „Runs an associative folding function on the given list. Note: this function only spawns enough threads to make effective use of the  capabilities¥. Any two list elements may be processed sequentially or concurrently. To get parallelism, you have to set the numCapabilities value, e.g. using GHC's +RTS -N flag. ‹The next three functions take an implicit parameter ?seq. Set it to True if you want to only spawn threads for the capabilities (same as  assocFolda, good for speed). if you need all the actions to be executed concurrently, set it to False. 4These functions promise O(m f(n)/c) time, provided: 4unsafeFreeze does a pointer cast (which it doesn't) \green threads are created on the same OS thread as the creating thread where possible Cn is the number of computations which are indexed from 0 to n - 1. ~Runs several computations concurrently, and returns their results as an array. Waits for all threads to end before returning. 3Version of concF specialized for two computations. nRuns several computations in parallel, and returns one of their results (terminating the other computations). >?@ABC D EF   >?@ABC D EFNone !"*234HM Constructors for caller's use ¶Optimizes an arrow for parallel execution. The arrow can be optimized once, and the result saved for multiple computations. (The exact output of the optimizer is subject to change.) 'The arrow must be finitely examinable. Evaluates arrows. ) GHIJKLMNO PQRSTUVWXYZ[\]^     ONMLKJIHGPQRSTUVWXYZ[\]^None!"?The Res arrow. $žUse this to run computations built in the Res arrow. Pieces of the arrow that hold locks must be finitely examinable, otherwise it doesn't terminate.  !"#_`abcd$%efgh  !"#$% #"! $% #"! _`abcd$%efghNone)%Filters the AList using a predicate. *eFolds the AList with a function, that must be associative. This allows parallelism to be introduced. +)Combine monoid elements to get a result. ,Length of an AList. -/Find the first element satisfying a predicate. . Concatenate an AList of ALists. &'()ij*+,-.klmno &'()*+,-. &(')*+,-.&(')ij*+,-.klmno Safe-Inferred+/[Thrown by the writer function when the garbage collector detects that no one will read it. 2_Take the first element from a channel, and a channel representing the remainder of the output. 3™Create a new channel. The first return value is a function that can be used to add values to the channel. The second return value is the channel itself. 4ÿÿThe first return value is a thunk that returns values from the channel successively, starting from the position of the parameter channel. The second thunk can be used to retrieve the position of the channel after all the reads made using the first thunk. /01pq234r/012341/0234/01pq234r Safe-Inferred5The CSP data type: :|| - interleave :? - deterministic choice Join - interface parallel :-> - prefix Stop - empty computation 7Do - execute IO, then behave as the returned process =Run a CSP computation. stuv56789:;w<=x 56789:;<= 5;:9876<=svut5;:9876w<=x8y      !"#$%&'()*+,-. /01233456789:;<=>?@ABCDEFGHIJKLMNOPQ#RSTUVWXYZ[\]^_`abcdefghijklmnop4qrstuvwxyConcurrentUtils-0.3.0.0Control.CUtils.ConcControl.CUtils.DataParallelControl.CUtils.DeadlockControl.CUtils.AListControl.CUtils.FChanControl.CUtils.Processes ConcException ExceptionList assocFoldconcF_conc_concFconcconcPoneOfFoneOfASumProdArrCompMapConcatUnzipZipIndexCountArrCinjectprojectnewArrayoptimizeevalResIdPlusForkRelAcqLiftrunlftAListListAppend filterAListmonoidlenAList findAList concatAListDoneReadingExceptionChantakeChannewChan makeConsumerCSPDoStop:->Join:?:||runCSP0runCSP simpleConc_divideUp getExceptions partConc_ unsafeFreeze' partConcF partOneOfF$fExceptionConcException$fExceptionExceptionList UnpackSum2PackSum2 UnpackSum1PackSum1 UnpackProdPackProdUnpackPackpairUpmirror reassociatestepstep2step3 repetition repetition2eval0$fArrowChoiceA$fArrowA $fCategory*A $fShow(->) $fFunctorArrCresourceselectsgenerateSequenceshazardacquiredinserttest$fArrowChoiceRes $fArrowRes$fCategory*ResnoNils assocFold0$fFoldableAList$fTraversableAList$fFunctorAList$fMonadPlusAList $fMonadAListaddChan$fExceptionDoneReadingExceptionSideRLNprefix$fShowIO