úβ{&      !"#$%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! ) An  6 represents a pool of threads ready to execute tasks. 8If all you want is a basic thread pool, this will work. 7 You should consider using Control.ThreadPool instead. .Evaluation of the result is forced using seq. Simpler than calling (, but it allows no state or interaction 8 with the hooks and injectors. No strictness is forced. )To initilize an engine you must provide:  * the number of threads ( * an action that will get the input ) * an action that will consume output 2 * a mutator function to perform on all inputs 0 * an initial state for the mutator function BNo strictness is forced - be sure you force evaluation if wanted.  All hooks start out empty. &'()* !"#$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-0.0.1Control.ThreadPoolControl.Engine threadPool threadPoolIOHookLoc OutputHookPostMutateHook PreMutateHook InputHookHookHkhkFunc hkPriority hkDescriptionEngineEngchan1chan2tvInHooktvPreMutateHooktvPostMutateHook tvOutHookmvInHookmvPreMutateHookmvPostMutateHook mvOutHookstateinitSimpleEngineinitSimpleEngineIO initEngine addInputHook addOutputHookaddPreMutateHookaddPostMutateHook delInputHookdelPreMutateHookdelPostMutateHook delOutputHookinjectPreMutatorinjectPostMutatorworker stateManager inputManager outputManagerrunHooks