Applicative Programming, Disjoint Unions, Semigroups and Non-breaking Errors | Hacker News Reader