teardown (hackage): The teardown library allows you to reliably execute cleanup sub-routines for allocated resources. When a program is initialized, it:  Ensures that teardown sub-routines are executed exactly once  Ensures that if errors occur on the execution of a Teardown sub-routine, the error does not propagate to others; bulkheading failure on cleanup.  Requires every sub-routine to be documented at creation time; thus helping tracing your application structure.  Allows tracing the teardown of your application, how is structured, how much time it takes to execute, and what component (if any) failed to finalize.
Keywords: library|mit|system|control|haskell|teardown