Debugging Testing Packaging your software (Cabal) Using the Foreign Function Interface (FFI) Generic programming: Scrap your boilerplate