úÎ!/U.¥Nonek.quncaught-exceptionHelper data type used by  . It causes show to call displayException8. When an exception of this type is caught, it will be shown and that will call displayException of the wrapped exception.uncaught-exception6Customise default uncaught exception handling to use  instead of  :. This function is supposed to be applied to the body of mainy. Note that it only affects exceptions in the current thread, other threads are not affected. It is adviced to use the asyncP package that propagates exceptions from the child thread to the parent thread.VIt works by catching all exceptions and wrapping them into a wrapper data type whose   method uses Y. The wrapped exception is re-thrown and the default exception handler will handle it. / will be used for printing because that's how  K of the wrapper data type is implemented. Some exceptions are not wrapped:  a exception because it's treated specially and affects exit code of the application. If we catch  ExitSuccessp, wrap it into another data type and re-throw, the program will end with non-zero code which is not desirable.BAsynchronous exceptions. There are not many of them and applying Ø to them usually does not give big benefit. However, some of them may be handled somewhat specially by the runtime system and we don't want to mess up with that. We recognize asynchronous exceptions by casting to   the same way as the safe-exceptions library.uncaught-exception6Customise default uncaught exception handling to use  instead of  :. This function is supposed to be applied to the body of main.It works similarly to ©, but instead of catching and throwing exceptions it modifies the uncaught exception handler to wrap the exception before processing it. As a consequence, it affects all­ threads. When the action finishes, the uncaught exception handler is restored (normally it should not matter because the function is supposed to be applied to the whole main).ÿ Note that it may cause race condition if the passed action spawns another thread that throws an uncaught exception when the passed action stops. There is a global variable that stores the uncaught exception handler. Hence it's recommended to use functions from the asyncI package to spawn threads, so that they are stopped before their parent.ÁThe handler won't be restored in case of exception thrown by the passed action because otherwise it wouldn't work. Specifically, if we restored the handler in case of exception (e. g. using bracket”), it would be restored before the uncaught exception handler would be called (because the uncaught exception handler is called after everything).uncaught-exception A version of Á that updates the handler forever. The only difference is that it doesn't restore the default handler. This function should give more predictable behavior in case there are multiple threads.   /uncaught-exception-0.1.0-BbrGPvg6clSKIvw9qphJG9Control.Exception.UncaughtDisplayExceptionInShowdisplayUncaughtExceptionwithDisplayExceptionHandlersetDisplayExceptionHandler wrapException!$fExceptionDisplayExceptionInShow$fShowDisplayExceptionInShowbaseGHC.Exception.TypedisplayExceptionGHC.ShowshowGHC.IO.ExceptionExitCodeSomeAsyncException