Conclusion

Non-breaking error handling is just an applicative functor on a partially applied disjoint union type constructor with semigroup error elements so what's the big deal?!

All this can even be done in Java's type system using Functional Java.

Scalaz uses this for web form field validation.