
For whatever reason, nobody seems to have gotten around to implementing an Abort monad transformer (outside the monadLib package), so I decided to write one myself since I wanted the functionality but I use "transformers" rather than "monadLib". An abortable monadic computation runs until either it is finished or it is aborted by calling the "abort" function. All steps in the computation after "abort" has been called are ignored, which means that abort can be assigned an arbitrary type for its value within the computation. My implementation uses an Either type which is Left if the computation has been prematurely terminated and Right of the computation is continuing to proceed as normal. I could have implemented the functionality using the Continuation monad, but that seemed to be overkill in cases where the user only wants a simple abort monad. Cheers, Greg