Applicative Programming, Disjoint Unions, Semigroups and Non-breaking Error Handling ∘ Brisbane Functional Programming Group, Brisbane, Australia ∘ 2010-04-01