úÎ'Á%¤     zA trival thread pool for pure functions (mappings). Simply specify the number of threads desired and a mutator function. \A trivial thread pool that allows IO mutator functions. Evaluation of output is not strict  - force evaluation if desired! 'HA hook is simply a mutation on the task. The priority is used to order M hook execution (lower value priorites happen first). For accounting and to 1 remove old hooks the description field is used.  !"#An 6 represents a pool of threads ready to execute tasks.  8If all you want is a basic thread pool, this will work.  You should consider using Control.ThreadPool instead. .Evaluation of the result is forced using seq. K Input, output, and intermediate channels are length bounded to a multiple  of the number of workers. Simpler than calling (, but it allows no state or interaction 8 with the hooks and injectors. No strictness is forced. JInput, output, and intermediate channels are length bounded to a multiple  of the number of workers. )To initilize an engine you must provide:  the number of threads 5 the maxiumum channel size for intermediate channels # an action that will get the input $ an action that will consume output - a mutator function to perform on all inputs + an initial state for the mutator function BNo strictness is forced - be sure you force evaluation if wanted.  All hooks start out empty. $%&'(BAdds a hook that will be performed in serial on all jobs added to  the input queue. <Adds a hook that will be performed in serial on all results , before they are added to the output queue. GAdds a hook that will be performed in parallel before the main mutator  function. FAdds a hook that will be performed in parallel after the main mutator  function. 9Deletes all input hooks matching the provided desciption >Deletes all pre-mutate hooks matching the provided desciption ?Deletes all post-mutate hooks matching the provided desciption :Deletes all output hooks matching the provided desciption 1Allows adding tasks that bypass the input hooks. (Allows bypassing the mutator, meaning a result! can be produced without a task. # This still hits the output hooks.     )      !"#$%&'()*+,Control-Engine-1.1.0.0Control.ThreadPoolControl.Engine threadPool threadPoolIOHookHkhkFunc hkPriority hkDescriptionEngineEngchan1chan2tvInHooktvPreMutateHooktvPostMutateHook tvOutHookstateinitSimpleEngineinitSimpleEngineIO initEngine addInputHook addOutputHookaddPreMutateHookaddPostMutateHook delInputHookdelPreMutateHookdelPostMutateHook delOutputHookinjectPreMutatorinjectPostMutator RefEngineRefEng refInHookrefPreMutateHookrefPostMutateHook refOutHookrefStateworker stateManager inputManager outputManagerrunHooks