UInt is just being handled individually by the core. You can override method
Range by either mixin a role into your subset base type:
constant MyInt = Int but role { method Range { 1...10 } };
subset OneToTen of MyInt where ...;
Or by subclassing Int:
class MyInt is Int { method Range { ... } }
Best regards,
Vadim Belman
> On Jan 28, 2020, at 10:03 AM, Simon Proctor <[email protected]> wrote:
>
> So some recent conversations covered the Range method on numeric types like
> Int
>
> So Int.Range gives the range of valid values -Inf^..^Inf which is neat.
>
> Then I thought I'd try UInt.Range and got 0..^Inf
>
> Ah Ha! Thinks I. I have a plan. What if I try this?
>
> my subset OneToTen of Int where { not .defined or 1 <= $_ <= 10 };
> say OneToTen.Range;
>
> And it gives ...
>
> -Inf^..^Inf
>
> And now I'm a bit confused. The Docs say the UInt is just a subset
> https://docs.raku.org/type/UInt <https://docs.raku.org/type/UInt>
>
> So how does it have it's own Range?
>
> --
> Simon Proctor
> Cognoscite aliquid novum cotidie
>
> http://www.khanate.co.uk/ <http://www.khanate.co.uk/>