Result is great but it ideally needs extensible union types (polymorphic variants) plus exhaustive pattern matching to work well.