Building a standalone application Debugging Testing Packaging your software (Cabal) Using the Foreign Function Interface (FFI) Generic Programming : Scrap your boilerplate