Îõ³h*$Ï#ˆ6      !"#$%&'()*+,-./0123450.2.6  Safe-Inferredñò€ auto-update+Settings to control how values are updated.!This should be constructed using ! and record update syntax, e.g.: let settings =  {  =   }  auto-update;Microseconds between update calls. Same considerations as  threadDelay apply.(Default: 1000000 microseconds (1 second) auto-updateObsoleted field. auto-update0Action to be performed to get the current value.Default: does nothing. auto-update!Label of the thread being forked. Default:  AutoUpdate auto-updateDefault value for creating an .6  Safe-InferredñòÕ7 auto-updateÿGenerate an action which will either read from an automatically updated value, or run the update action in the current thread.8 auto-update»Generate an action which will either read from an automatically updated value, or run the update action in the current thread if the first time or the provided modify action after that.9 auto-update?Turn a runtime exception into an impure exception, so that all :â actions will complete successfully. This simply defers the exception until the value is forced.78  Safe-Inferred%&ñòÓ; auto-updateÿGenerate an action which will either read from an automatically updated value, or run the update action in the current thread.< auto-update»Generate an action which will either read from an automatically updated value, or run the update action in the current thread if the first time or the provided modify action after that.  auto-updateiref <- newIORef (0 :: Int)1action = modifyIORef iref (+ 1) >> readIORef irefö(getValue, closeState) <- mkClosableAutoUpdate $ defaultUpdateSettings { updateFreq = 200_000, updateAction = action }getValue1threadDelay 100_000 >> getValue1threadDelay 200_000 >> getValue2 closeState auto-updateprovide  for debugging ;<  Safe-Inferred%&ñò     Safe-Inferredñò H Safe-InferredÝñò: auto-updateâSetting to control whether the action happens at the leading and/or trailing edge of the timeout. auto-updateÝPerform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period. auto-updateƒPerform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, it is ignored. auto-update‡Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect. auto-update•Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it restarts the cooldown again. auto-update/Settings to control how debouncing should work.!This should be constructed using defaultDebounceSettings! and record update syntax, e.g.: let settings = defaultDebounceSettings {  = flushLog }  auto-update6Length of the debounce timeout period in microseconds.Default: 1 second (1000000) auto-updateAction to be performed.ÆNote: all exceptions thrown by this action will be silently discarded.Default: does nothing. auto-updateÓWhether to perform the action on the leading edge or trailing edge of the timeout. Default: . auto-update,Label of the thread spawned when debouncing. Default: Debounce. auto-updateÝPerform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, wait until the end of the cooldown and then perform the action again, then enter a new cooldown period.)Example of how this style debounce works: ¦! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... ....... ....... X X X X auto-updateƒPerform the action immediately, and then begin a cooldown period. If the trigger happens again during the cooldown, it is ignored.)Example of how this style debounce works: ü! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... X X auto-update‡Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it has no effect.)Example of how this style debounce works: …! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ....... X X  auto-update•Start a cooldown period and perform the action when the period ends. If another trigger happens during the cooldown, it restarts the cooldown again.%N.B. If a trigger happens DURING the  it starts a new cooldown.  So if the  takes longer than the , it might run +again before the previous action has ended.)Example of how this style debounce works: š! = function execution . = cooldown period X = debounced code execution ! ! ! ! ....... ............... X X    Safe-Inferredñòû# auto-updateDefault value for creating a DebounceSettings.$ auto-updateËGenerate an action which will trigger the debounced action to be performed.ÌN.B. The generated action will always immediately return, regardless of the  debounceFreq, Úas the debounced action (and the delay/cooldown) is always performed in a separate thread. $# $# Safe-Inferredñò{% auto-update%A data structure to hold reaper APIs.' auto-updateAdding an item to the workload( auto-updateReading workload.) auto-update8Modify the workload. The resulting workload is returned.ÆIf there is no reaper thread, the modifier will not be applied and  reaperEmpty will be returned.ÿIf the reaper is currently executing jobs, those jobs will not be in the given workload and the workload might appear empty.ûIf all jobs are removed by the modifier, the reaper thread will not be killed. The reaper thread will only terminate if + is called or the result of  reaperAction satisfies  reaperNull.* auto-updateÊStopping the reaper thread if exists. The current workload is returned.+ auto-update0Killing the reaper thread immediately if exists.%&'()*+%&'()*+ Safe-Inferred%&ñò#d = auto-updateState of reaper.> auto-updateNo reaper thread? auto-updateThe current jobs, auto-update?Settings for creating a reaper. This type has two parameters: workload$ gives the entire workload, whereas itemÇ gives an individual piece of the queue. A common approach is to have workload be a list of items. This is encouraged by 3 and 5.- auto-updateþThe action to perform on a workload. The result of this is a "workload modifying" function. In the common case of using lists, the result should be a difference list that prepends the remaining workload to the temporary workload. The temporary workload here refers to items added to the workload while the reaper action is running. For help with setting up such an action, see 5. Default: do nothing with the workload, and then prepend it to the temporary workload. This is incredibly useless; you should definitely override this default.. auto-update1Number of microseconds to delay between calls of -.Default: 30 seconds./ auto-updateAdd an item onto a workload.Default: list consing.0 auto-updateÎCheck if a workload is empty, in which case the worker thread will shut down. Default: @.1 auto-updateAn empty workload.Default: empty list.2 auto-update*Label of the thread spawned by the reaper. Default: Reaper.3 auto-updateDefault ReaperSettings4 value, biased towards having a list of work items.4 auto-update¢Create a reaper addition function. This function can be used to add new items to the workload. Spawning of reaper threads will be handled for you automatically.5 auto-updateA helper function for creating -‚ functions. You would provide this function with a function to process a single work item and return either a new work item, or Nothing if the work item is expired.,-./0123%'()*+45,3-./012%'()*+45Á           !""#$%&'()*+,-./00123456789:;<=>?   @ABC  DEFGHIÊ(auto-update-0.2.6-1V5uGQU6j0e7XvGabZUbFWControl.AutoUpdateControl.AutoUpdate.InternalControl.Debounce.InternalControl.DebounceControl.Reaper.InternalControl.Reaper auto-updateControl.AutoUpdate.TypesData.Time.ClockgetCurrentTimeControl.AutoUpdate.ThreadControl.AutoUpdate.EventUpdateSettings updateFrequpdateSpawnThreshold updateActionupdateThreadNamedefaultUpdateSettings UpdateStateusUpdateAction_ usLastResult_usIntervalMicro_usTimeHasCome_usDeleteTimeout_mkClosableAutoUpdatemkClosableAutoUpdate' mkAutoUpdatemkAutoUpdateWithModify DebounceEdgeLeading LeadingMuteTrailing TrailingDelayDebounceSettings debounceFreqdebounceAction debounceEdgedebounceThreadName leadingEdgeleadingMuteEdge trailingEdgetrailingDelayEdgemkDebounceInternal$fShowDebounceEdge$fEqDebounceEdgedefaultDebounceSettings mkDebounceReaper reaperAdd reaperRead reaperModify reaperStop reaperKillReaperSettings reaperAction reaperDelay reaperCons reaperNull reaperEmptyreaperThreadNamedefaultReaperSettingsmkReaper mkListAction catchSomeghc-prim GHC.TypesIOStateNoReaperWorkloadbase Data.Foldablenull