M[      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ BClass for generic map key types. By using indexed type families, B |each key type may correspond to a different data structure that  |implements it. ?All datatypes that can be packed into a single word, including  scalars and some tuple types. -Run IO threads in parallel and wait till they' re done. Run a test and time it. )A simple loop construct to use if you don'%t trust rewrite based deforestation. K Usage foldRange start end acc, where start is inclusive, end uninclusive. 4My own forM, again, less trusting of optimizations. ! Inclusive start, exclusive end. BSplit a list into N pieces (not evenly sized if N does not divide  the length of the list). =GMaps with list indices could be treated like tuples (nested 6 |maps). Instead, we put them in a regular Data.Map. GSum types are represented by separate GMaps for the separate variants. 2GMaps over pairs are implemented by nested GMaps. L     'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). !Construct a new item collection.  Construct a new tag collection. TPut an item. Subsequently, any steps waiting on the item may subsequently execute. gAttach a computation step to a supply of control tags. This adds a new node in the computation graph. MRun an initial step which populates the CnC graph with input tags and items. J Presently only a single initialize is allowed within a graph execution. @Construct a CnC graph and execute it to completion. Completion  is defined as the % action having completed. 4Print a message within a step (unsafe side effect). !IPrint a message within the graph construction code (unsafe side effect). "#=Put-Tag. Push a control tag out into the computation graph. $/Get an item. Synchronous read-data operation. %eRun a final step which collects outputs of the graph that are of interest to the larger application. H Presently only a single finalize is allowed within a graph execution. &'( !"#$%&'(#$% !&'(" !"#$%&'( )*+,-.'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. /rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). 0!Construct a new item collection. 1 Construct a new tag collection. 2TPut an item. Subsequently, any steps waiting on the item may subsequently execute. 3gAttach a computation step to a supply of control tags. This adds a new node in the computation graph. 4MRun an initial step which populates the CnC graph with input tags and items. J Presently only a single initialize is allowed within a graph execution. 54Print a message within a step (unsafe side effect). 6IPrint a message within the graph construction code (unsafe side effect). 78=Put-Tag. Push a control tag out into the computation graph. 9@Construct a CnC graph and execute it to completion. Completion  is defined as the ; action having completed. :/Get an item. Synchronous read-data operation. ;eRun a final step which collects outputs of the graph that are of interest to the larger application. H Presently only a single finalize is allowed within a graph execution. <=>)*+,-./0123456789:;<=>.-,*+01382:4;956/)<=>7)*+,-./0123456789:;<=> ?@ABCD'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. ErAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). F!Construct a new item collection. G Construct a new tag collection. HTPut an item. Subsequently, any steps waiting on the item may subsequently execute. IgAttach a computation step to a supply of control tags. This adds a new node in the computation graph. JMRun an initial step which populates the CnC graph with input tags and items. J Presently only a single initialize is allowed within a graph execution. K4Print a message within a step (unsafe side effect). LIPrint a message within the graph construction code (unsafe side effect). MNOPQ=Put-Tag. Push a control tag out into the computation graph. R@Construct a CnC graph and execute it to completion. Completion  is defined as the S action having completed. SeRun a final step which collects outputs of the graph that are of interest to the larger application. H Presently only a single finalize is allowed within a graph execution. T/Get an item. Synchronous read-data operation. ?@ABCDEFGHIJKLMNOPQRSTDBA?@FGIQHTJSRKLECNOPM?@ABCDEFGHIJKLMNOPQRST"UVWXYZ'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. [rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). \ Construct a new tag collection. ]gAttach a computation step to a supply of control tags. This adds a new node in the computation graph. ^@Construct a CnC graph and execute it to completion. Completion  is defined as the i action having completed. _4Print a message within a step (unsafe side effect). `IPrint a message within the graph construction code (unsafe side effect). abcde!Construct a new item collection. f=Put-Tag. Push a control tag out into the computation graph. g/Get an item. Synchronous read-data operation. hMRun an initial step which populates the CnC graph with input tags and items. J Presently only a single initialize is allowed within a graph execution. ieRun a final step which collects outputs of the graph that are of interest to the larger application. H Presently only a single finalize is allowed within a graph execution. jTPut an item. Subsequently, any steps waiting on the item may subsequently execute. UVWXYZ[\]^_`abcdefghijZXUVWe\]fjghi^_`[YbcdaUVWXYZ[\]^_`abcdefghij  klmnop'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. qrAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). r!Construct a new item collection. s Construct a new tag collection. tTPut an item. Subsequently, any steps waiting on the item may subsequently execute. ugAttach a computation step to a supply of control tags. This adds a new node in the computation graph.  vMRun an initial step which populates the CnC graph with input tags and items. J Presently only a single initialize is allowed within a graph execution. w4Print a message within a step (unsafe side effect). xIPrint a message within the graph construction code (unsafe side effect). yz{|   }=Put-Tag. Push a control tag out into the computation graph. ~@Construct a CnC graph and execute it to completion. Completion  is defined as the  action having completed. eRun a final step which collects outputs of the graph that are of interest to the larger application. H Presently only a single finalize is allowed within a graph execution. /Get an item. Synchronous read-data operation. klmnopqrstuvwxyz{|}~pnmklrsu}tv~wxqoz{|yklmnopqrstuvwxyz{|}~                          !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ haskell-cnc-0.1 Intel.CncPure Intel.Cnc3 Intel.Cnc5 Intel.Cnc6 Intel.Cnc8 Intel.Cnc Intel.CncUtil GraphCodeStepCodeCCStepItemColTagCol cncVariantgetputputt newTagCol newItemCol prescribe initializefinalizerunGraph stepPutStr cncPutStrtestsItemnewItemreadItemputItem GMapKeyValGMap2empty2lookup2insert2GMapKeyGMapemptylookupinsertaltertoList FitInWordtoWordfromWordHashablehashHotVar MutableMapsplitN newMutableMap newHotVar modifyHotVar modifyHotVar_ intToWord wordToInt!myGMapintMap $fGMapKey[]$fGMapKeyEither $fGMapKey(,) foldRangefor_forkJoindoTrials assureMvarmmToListtestCaseIITIGCBundleBblockedbstepsintagsouttagsitems PrimedStepGraphGNewItemNINewTagNT StepResultBlockDoneItemColInternalTagColInternalICIDTCID MatchedTagMapMTMatchedItemMapMI Collections _newWorld _newTagCol _newItemColmagic_get_rem_put_putt moremagictmagic mostmagic mergeUpdates megamagic _prescribegetSteps callStepssimpleSchedulermagic_to_alternatebetterBlockingScheduler mirrorWorld updateMirrornewItemsAgainstBlockedparallelScheduler parSched2 runSomeSteps2 runSomeSteps gcPrintWorld cncUnsafeIO stepUnsafeIO finalmagic itemsToListincrStep tail_putt HiddenState5 global_stackglobal_numworkersglobal_makeworkerglobal_mortalthreadspushtryPopver5_6_core_finalize EscapeStep WaitingSteps HiddenState8 stepStats launch_steps try_stepcodespawninitfin