Explanation of Generalized Algebraic Data Types in Haskell | Hacker News Reader