Haskell: Smart constructors that cannot fail | Hacker News Reader