ِ      !"#$%&'()*+,-./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. N     'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. !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. @Convert an entire item collection into an association list. In ) general, this can only be done from the ( step and 7 requires selecting a runtime scheduler which supports  quiescence , that is, J a scheduler that waits for all active steps to complete before executing (. ? (Currently, all schedulers but version 3 support quiescence.) 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). "rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). #$"cncFor start end body" runs body& in parallel over the inclusive range  [start..end]. CFrequently, CnC graphs are serial within steps but parallel at the # level of the graph. In contrast, $ exposes parallelism   within a step1. Whether the body of the parallel for is doing ! work, or just spawning work via &, $ can help ' distribute the work more efficiently. %A two dimensional loop. &=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. )*+ !"#$%&'()*+&'( !")*+$%# !"#$%&'()*+,-./01'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. 2!Construct a new item collection. 3 Construct a new tag collection. 4TPut an item. Subsequently, any steps waiting on the item may subsequently execute. 5gAttach a computation step to a supply of control tags. This adds a new node in the computation graph. 6@Convert an entire item collection into an association list. In ) general, this can only be done from the A step and 7 requires selecting a runtime scheduler which supports  quiescence , that is, J a scheduler that waits for all active steps to complete before executing A. ? (Currently, all schedulers but version 3 support quiescence.) 7MRun 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. 84Print a message within a step (unsafe side effect). 9IPrint a message within the graph construction code (unsafe side effect). :rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). ;<"cncFor start end body" runs body& in parallel over the inclusive range  [start..end]. CFrequently, CnC graphs are serial within steps but parallel at the # level of the graph. In contrast, < exposes parallelism   within a step1. Whether the body of the parallel for is doing ! work, or just spawning work via >, < can help ' distribute the work more efficiently. =A two dimensional loop. >=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 A action having completed. @/Get an item. Synchronous read-data operation. AeRun 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. BCD,-./0123456789:;<=>?@ABCD10/-.235>4@7A?689:,BCD<=;,-./0123456789:;<=>?@ABCDEFGHIJ'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. K!Construct a new item collection. L Construct a new tag collection. MTPut an item. Subsequently, any steps waiting on the item may subsequently execute. NgAttach a computation step to a supply of control tags. This adds a new node in the computation graph. O@Convert an entire item collection into an association list. In ) general, this can only be done from the \ step and 7 requires selecting a runtime scheduler which supports  quiescence , that is, J a scheduler that waits for all active steps to complete before executing \. ? (Currently, all schedulers but version 3 support quiescence.) PMRun 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. Q4Print a message within a step (unsafe side effect). RIPrint a message within the graph construction code (unsafe side effect). SrAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). TUVWX"cncFor start end body" runs body& in parallel over the inclusive range  [start..end]. CFrequently, CnC graphs are serial within steps but parallel at the # level of the graph. In contrast, X exposes parallelism   within a step1. Whether the body of the parallel for is doing ! work, or just spawning work via Z, X can help ' distribute the work more efficiently. YA two dimensional loop. Z=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. EFGHIJKLMNOPQRSTUVWXYZ[\]JHGEFKLNZM]P\[OQRSIUVWXYTEFGHIJKLMNOPQRSTUVWXYZ[\]%^   _`abc'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. d Construct a new tag collection. egAttach a computation step to a supply of control tags. This adds a new node in the computation graph. f@Construct a CnC graph and execute it to completion. Completion  is defined as the t action having completed. g4Print a message within a step (unsafe side effect). hIPrint a message within the graph construction code (unsafe side effect). irAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). jklmn"cncFor start end body" runs body& in parallel over the inclusive range  [start..end]. CFrequently, CnC graphs are serial within steps but parallel at the # level of the graph. In contrast, n exposes parallelism   within a step1. Whether the body of the parallel for is doing ! work, or just spawning work via q, n can help ' distribute the work more efficiently. oA two dimensional loop.   p!Construct a new item collection. q=Put-Tag. Push a control tag out into the computation graph. r/Get an item. Synchronous read-data operation. sMRun 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. teRun 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. uTPut an item. Subsequently, any steps waiting on the item may subsequently execute. v@Convert an entire item collection into an association list. In ) general, this can only be done from the t step and 7 requires selecting a runtime scheduler which supports  quiescence , that is, J a scheduler that waits for all active steps to complete before executing t. ? (Currently, all schedulers but version 3 support quiescence.) ^_`abcdefghijklmnopqrstuvca^_`pdequrstfvghibklmnoj^_`abcdefghijklmnopqrstuvwxyz{|'Steps are functions that take a single tag as input and perform  a computation in the StepCode monad, which may perform puts and gets. }!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. @Convert an entire item collection into an association list. In ) general, this can only be done from the  step and 7 requires selecting a runtime scheduler which supports  quiescence , that is, J a scheduler that waits for all active steps to complete before executing . ? (Currently, all schedulers but version 3 support quiescence.) 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. 4Print a message within a step (unsafe side effect). IPrint a message within the graph construction code (unsafe side effect). rAn informal identifier of the CnC version presently in use (for example, identifying a scheduler implementation). "cncFor start end body" runs body& in parallel over the inclusive range  [start..end]. CFrequently, CnC graphs are serial within steps but parallel at the # level of the graph. In contrast,  exposes parallelism   within a step1. Whether the body of the parallel for is doing ! work, or just spawning work via ,  can help ' distribute the work more efficiently. A two dimensional loop. =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. wxyz{|}~|zywx}~{wxyz{|}~          !     !     !     !     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ haskell-cnc-0.1.3 Intel.CncPure Intel.Cnc3 Intel.Cnc5 Intel.Cnc6 Intel.Cnc8 Intel.Cnc Intel.CncUtil GraphCodeStepCodeCCStepItemColTagCol cncVariantgetputputt newTagCol newItemCol prescribe initializefinalizerunGraph stepPutStr cncPutStrtestsItem itemsToListcncForcncFor2DnewItemreadItemputItem GMapKeyValGMap2empty2lookup2insert2GMapKeyGMapemptylookupinsertaltertoList FitInWordtoWordfromWordHashablehashHotVar MutableMapsplitN newMutableMap newHotVar modifyHotVar modifyHotVar_ intToWord wordToInt!myGMapintMap $fGMapKey[]$fGMapKeyEither $fGMapKey(,) foldRangefor_splitInclusiveRangeforkJoindoTrials 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 finalmagicincrStep graphInStep tail_putt HiddenState5pushtryPopver5_6_core_finalize EscapeStep WaitingSteps HiddenState8 stepStats launch_steps try_stepcodespawninitfin