Data Validation In Haskell with newtypes, smart constructors, and AESON
dylanamartin.com