úÎ! F   None47N 5Immortal thread identifier (including its underlying  ):Spawn a new immortal thread running the given computation.vIf the computation ever finishes (either normally or due to an exception), it will be restarted (in the same thread).%The monadic «state» (captured by the  ƒ instance) will be preserved if the computation terminates normally, and reset when the exception is thrown, so be cautious when m> is stateful. It is completely safe, however, to instantiate m with something like ReaderT conf IO* to pass configuration to the new thread.Like 7, but also apply the given label to the thread (using  ).kMake a thread mortal. Next time a mortal thread attempts to finish, nothing will prevent it from doing so.;Calling this on an already mortalized thread has no effect.If a thread was wd, this will make it immortal again. However, if it finished while being in the mortal state, it won't be resurrected.1Calling this on an immortal thread has no effect.Stop (kill) an immortal thread.OThis is equivalent to making it mortal, and then killing it with an exception.dNote that if the thread has installed its own exception handlers, it may not be killed immediately.!Wait for the thread to stop. Use  to stop the threadAn STM version of Get the   of the immortal thread.The  Â can be used to throw asynchronous exception to interrupt the computation. This won't kill the thread, however  even if the exception is not handled, the computation will be simply restarted.  Run a callback every time the action finishes. This can be used e.g. to log exceptions or attempts to exit when such attempts are not expected. Example usage: 8Immortal.create $ \_ -> Immortal.onFinish print myAction2This is nothing more than a simple wrapper around . Like  `, but the callback does not run when the thread is mortalized (i.e. when the exit is expected).The : argument is used to find out the mortality of the thread.          immor_8JOqY6iGrX2Da8F0YGbrdzControl.ImmortalThreadcreatecreateWithLabel mortalize immortalizestopwaitwaitSTMthreadIdonFinishonUnexpectedFinishbase GHC.Conc.SyncThreadIdmonad_0xW5zcMb0FUIevHTuIUHuLControl.Monad.Trans.ControlMonadBaseControl labelThreadlifte_5D91cjXHiv39Kr8gZ3cfueControl.Exception.Liftedtry