Data Validation In Haskell with newtypes, smart constructors, and AESON | Hacker News Reader