As much as I like Dhall, it needs unions like in typescript so we don't see `Some` littered everywhere.
Like other forms of subtyping, unions make type inference much harder - typically undecidable. This is, of course, incompatible with guaranteed termination.