Define a primitive data type
subset OneToTen of Int where 1..10;
my OneToTen $n = 5;
$n += 6;
Here the result 11 fails to smartmatch against the range 1..10
, so the second assignment throws an exception. You may use any valid smartmatch predicate within a where
clause, so the following one-argument closure is also legal:
subset Prime of Int where -> $n { $n > 1 and so $n %% none 2 .. $n.sqrt }