úÎ*g* Safe-Infered?An opaque representation of the contents and last modification ' times of a forest of directory trees.  Create a  for later checking with  BChecks that all the files present in the initial set of paths are M the exact set of files currently present, with unchanged modifcations times  Safe-Infered@A type synonym to simply talking about the type loaded by hint. Convert an action to generate s into Snap and IO actions M that handle periodic reloading. The resulting action will share initialized G state until the next execution of the input action. At this time, the " cleanup action will be executed. MThe first two arguments control when recompiles are done. The first argument H is an action that is executed when compilation starts. The second is a K function from the result of the first action to an action that determines E whether the value from the previous compilation is still good. This N abstracts out the strategy for determining when a cached result is no longer  valid. JIf an exception is raised during the processing of the action, it will be E thrown to all waiting threads, and for all requests made before the ! recompile condition is reached.  Safe-InferedNoneKThis function derives all the information necessary to use the interpreter N from the compile-time environment, and compiles it in to the generated code. 8This could be considered a TH wrapper around a function  > loadSnap :: Typeable a => IO a -> (a -> IO (Snap (), IO ())) > -> [String] -> IO (a, Snap (), IO ()) *with a magical implementation. The [String] argument is a list of F directories to watch for updates to trigger a reloading. Directories C containing code should be automatically picked up by this splice. LThe generated splice executes the initialiser once, sets up the interpreter 3 for the load function, and returns the initializer's result along with the  interpreter'?s proxy handler and cleanup actions. The behavior of the proxy M actions will change to reflect changes in the watched files, reinterpreting H the load function as needed and applying it to the initializer result. KThis will handle reloading the application successfully in most cases. The M cases in which it is certain to fail are those involving changing the types K of the initializer or the load function, or changing the compiler options  required, such as by changing/"adding dependencies in the project' s .cabal 8 file. In those cases, a full recompile will be needed. the initializer expression the name of the load function +a list of directories to watch in addition  to those containing code    snap-loader-dynamic-0.9.0Snap.Loader.DynamicSnap.Loader.Dynamic.TreeWatcherSnap.Loader.Dynamic.EvaluatorSnap.Loader.Dynamic.Signal loadSnapTH TreeStatus getTreeStatuscheckTreeStatus HintLoadableprotectedHintEvaluatorprotectHandlers