#+TODO: TODO TO-CLEAN TO-REVIEW | DONE #+TITLE: Haskell for the working programmer #+AUTHOR: Yann Esposito #+EMAIL: yann.esposito@gmail.com #+LANGUAGE: en #+KEYWORDS: haskell #+PROPERTY: header-args :output-dir HWP :mkdirp yes :tangle-mode (identity #o755) #+BEGIN_COMMENT /THIS IS A WORK IN PROGRESS/ *CONTRIBUTORS* This part is about giving the tools for an advanced programmer to work with Haskell and to gain its autonomy. And another part is about explaining classical things he should not necessarily master but should know exist and what they can be used for. Typically, it's nice to explain lenses with a few examples so he'll know this is an efficient tool to manipulate complex data structures. #+END_COMMENT * TODO Make Production Quality Products ** TODO Dhall /Maybe/ ** TODO Error Handling #+BEGIN_COMMENT This is a tricky one. My guts would suggest to dig enough with the type system to make impossible state irrepresentable and triggering compile time errors. But at the margin, this is not always possible. So this has to do with code organization. #+END_COMMENT ** TODO Unit testing / doctests ** TODO Generative Testing ** TODO Enhance reproductibility with docker ** TODO Enhance reproductibility with nix ** TODO How to deploy? There are plenty of ways de deploy *** TODO Trashy and easy Compile in docker and copy the binary. *** TODO With =nix= and =nixops=