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 (?).


Reply via email to