Teardown
Primary version
Primary version
  • Introduction
  • Theory
    • Purpose
  • How-to
    • v0.5
      • Create a Teardown
      • Display TeardownResult Tree
  • Development Notes
Powered by GitBook
On this page
  1. Theory

Purpose

PreviousTheoryNextHow-to

Last updated 7 years ago

The correct teardown of a system becomes a crucial matter when running applications through GHCi while doing REPL driven development; this library provides a stable API to manage the cleanup process of resources your application allocates when it runs for the first time.

This library will:

  • Make execution of cleanup IO () sub-routines (e.g. ) idempotent. This helps avoiding runtime exception of the "already closed resource" nature.

  • When composing with other cleanup IO () sub-routines, one can use the (>>) operator, but what happens if the sub-routine throws an exception? Likely other resource cleanup sub-routine is not going to be executed because of a runtime exception. This library allows the composition of multiple cleanup IO () sub-routines, while also ensuring that despite failures every resource cleanup is executed.

  • All teardown sub-routines use a description argument to keep track of what is being cleaned up; By requiring this description, we avoid confusion around what is going on when shutting down an application. This library makes this documentation a /required/ argument when building teardown sub-routines, thus helping trace-ability.

  • Keeps track how much time every teardown sub-routine takes, allowing the developer to learn which parts of the teardown procedure are slow and adequately address those on development time (e.g., Faster reload => Faster development feedback loops).

By using this library, you may implement without much effort a good, reliable and transparent strategy for application resource teardown sub-routines.

Database.PostgreSQL.Simple.close