sub lookup ( List \xs, Int \index ){…}
sub lookup ( List \xs, Int \index where 0 ..^ xs.elems ){…}
---
I think it may also apply if you have other limitations that you need to check regularly, like making sure that strings fit into a database.
sub foo ( Str \name where .chars ≤ 256 ){…}
subset DB-Str of Str where .chars ≤ 256; sub foo ( DB-Str \name ){…} my DB-Str $name = ''; $name = 'a' x 10000; # Typecheck error
One use of this feature is to implement the UInt type (This is almost exactly how it is implemented in the Rakudo implementation of Perl6)
subset UInt of Int where {$_ >= 0};
Then again I've never read any that talk about Perl6 as already having that feature; so maybe I'm mistaken.
I would guess that they are talking about something slightly different. (That often seems to be the case)
---
I think it may also apply if you have other limitations that you need to check regularly, like making sure that strings fit into a database.
Which Perl6 has the ability to give that a name as if it was a type so that it can be reused. ---One use of this feature is to implement the UInt type (This is almost exactly how it is implemented in the Rakudo implementation of Perl6)
---Then again I've never read any that talk about Perl6 as already having that feature; so maybe I'm mistaken.
I would guess that they are talking about something slightly different. (That often seems to be the case)