ZFQ]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ None%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. ]^_`abc  ]^_`abcNone3 2Create a channel with a buffer at least as big as buffer. :Write into the channel, blocking when the buffer is full. :Read from the channel, blocking when the buffer is empty. def gh    def gh 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 array. 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 two 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. 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).  ijklmnopq    ijklmnopqNone234The array interface )Inject a basic array into the ArrC type. Get a basic array out. -Convenience for making an array from a list. Programs involving these array operations are optimized by a set of rules when GHC's -O option is set. Use +RTS -N to get parallelism. %Associative fold &Control.Arrow substitutes + Internals  !"#$%&'()*+,-./012 !"#$%&'()*+,-./012 !"#$%&'()*+,-./012 !"#$%&'()*+,-./012None!"?3=The typical sequence that produces a deadlock is as follows:  Thread 1 acquires lock A Thread 2 acquires lock B Thread 1 tries to acquire B Thread 2 tries to acquire A  Deadlock.  Standard deadlock detection intervenes after (4) has occurred. I intervene in a lock acquisition that is followed by an unsafe schedule (here at (2)). I suspend thread 2 until a safe schedule is guaranteed -- in this case until thread 1 relinquishes lock A. The Res arrow. Computations are built with these constructors (and the arrow interface). Pieces of the arrow that hold locks have to be finitely examinable, Locks have to be used with the Acq and Rel constructors. :5Use this to run computations built in the Res arrow. 3456789rstuvw:;xyz{ 3456789:; 3987654:; 3987654rstuvw:;xyz{  Safe-Inferred|||NoneM @2Creates a new channel, with receive and send ends.AOpen a channel to another hostB:Creates a receive end of this host's channel. Type unsafe!CSends something on a channel.E"Receives something from a channel.F1Receives the send end of a channel, on a channel.G1Sends the receive end of a channel, on a channel.H4Receives the receive end of a channel, on a channel.KZRemote exercise of authority. Commands are transmitted in the clear, but authenticated.>auth - The authority to be served (runs on a separate thread)."r - The receive end from the host.s - The send end to the host.5publicKey - The public key of the intended recipient.L+privateKey - The private key for this host.5Returns a function that can be used to send messages.0<}=~>?@ABCDEFGHIJKLM<=>?@ABCDEFGHIJKLM>=?@ABCDEFGHIJ<KLM,<}=~>?@ABCDEFGHIJKLM Safe-Inferred+N[Thrown by the writer function when the garbage collector detects that no one will read it. Q_Take the first element from a channel, and a channel representing the remainder of the output. RCreate 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. SThe 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. NOPQRSNOPQRSPNOQRSNOPQRS Safe-InferredTThe 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. TUVWXYZ[\ TUVWXYZ[\ TZYXWVU[\TZYXWVU[\W      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWXYZ[\]^_`abcdefgh'ijklmnopqrstuvwxyz{|}~ BCDUConcurrentUtils-0.4.2.0Control.CUtils.AListControl.CUtils.ChannelControl.CUtils.ConcControl.CUtils.DataParallelControl.CUtils.DeadlockControl.CUtils.NetChanControl.CUtils.FChanControl.CUtils.ProcessesControl.CUtils.SplitAListListAppend filterAList assocFoldmonoidlenAList findAList concatAListChannel newChannel writeChannel readChannel ConcException ExceptionListconcF_conc_concFconcconcPoneOfFoneOfArrCinjectprojectnewArraymirrorpairUpmpcountindexzipconcatfoldfirstsecondleftrightand__pack__unpack __packProd __unpackProd __packSum1 __unpackSum1 __packSum2 __unpackSum2ResIdPlusForkRelAcqLiftrunlftAuthNetRecvNetSend localHost newNetChan newNetSend newNetRecvsendreceiverecvrecvSendsendRecvrecvRecv activateSend activateRecv authServer authClientexampleDoneReadingExceptionChantakeChannewChan makeConsumerCSPDoStop:->Join:?:||runCSP0runCSPnoNils assocFold0$fFoldableAList$fTraversableAList$fFunctorAList$fMonadPlusAList $fMonadAListnBits incrementalg simpleConc_divideUp getExceptions partConc_ unsafeFreeze' partConcF partOneOfF$fExceptionConcException$fExceptionExceptionListresourceselectsgenerateSequenceshazardacquiredinserttest$fArrowChoiceRes $fArrowRes$fCategory*Ressplit ChannelFibreIdentserveruptableport getIPAddress identifier modifyIdent__emptyNetSend__addConnection __newNetSendreadLoopserver __newNetRecv routeAround__sendrepeatMputLazy readSecureMem$fCryptoRandomGenEntropyPool $fBinaryAuth$fBinaryNetRecv$fBinaryNetSend $fEqNetRecv $fEqNetSend$fEqChannelFibreaddChan$fExceptionDoneReadingExceptionSideRLNprefix$fShowIO