I wouldn't call it stupid, but there are some definite rough edges:
* `Natural.high` and `Positive.high` shouldn't really exist.
* `Natural.succ` should always succeed by definition (`Natural.high.succ`
throws an error)
* `n in Natural` doesn't work - afaict, to turn a `range` into a `Slice`, you
have to do it manually: `n in (Natural.low..Natural.high)`
* `(Positive 1) is Natural` is false. `(Positive 1) == (Natural 1)` is true.
* Coercing to a `Natural` is implicit and can throw an error. Even declaring
code with `{.raises: [].}`, the compiler doesn't seem to anticipate the
possible error at compile time (?).