Re: valid values?

2019-05-12 Thread yary
"is copy" is what I wanted to allow modifying MAIN's passed-in values. "is rw" correctly rejects constants. sub MAIN(Int $value is copy where ($value .= Int) ∈ (1,2,4,8,16)) {say "\$value.perl = ",$value.perl } # says $value.perl = 4 -y On Sun, May 12, 2019 at 5:02 PM yary wrote: > On #perl6

Re: valid values?

2019-05-12 Thread yary
On #perl6 Int(IntStr) will not coerce because IntStr is already an Int; coercions will only fire if the type doesn't match, like with Array and Hash for example IntStr is a subclass of Int thus no coercion needed to set $value. A catch-22 if each right side element is Int as opposed to IntStr,

Re: valid values?

2019-05-12 Thread yary
Side note, using the angle brackets creates IntStr objects, which in some cases is harmless, sometimes necessary. > say <1 2 4 8 16 >.perl (IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(4, "4"), IntStr.new(8, "8"), IntStr.new(16, "16")) > say (1,2,4,8,16).perl (1, 2, 4, 8, 16) That's

Re: valid values?

2019-04-18 Thread mimosinnet
El Sunday, 03 de March del 2019 a les 02:09, ToddAndMargo via perl6-users va escriure: I want to pass an integer to a sub. The only valid values of the integer are 1, 2, 4, 8, and 16. Other than using "if" to test their values, is there a way to state that an integer can only have certain

Re: valid values?

2019-03-04 Thread Tom Browder
On Mon, Mar 4, 2019 at 8:22 AM Brad Gilbert wrote: ... > Somewhere on the Internet I layed out the rules that I think that > should normally be followed, but I am not sure where. ... It would be nice to find it and add to the docs. -Tom

Re: valid values?

2019-03-04 Thread Brad Gilbert
An Array isn't a type of Str. @ ~~ Str; # False Array ~~ Str; # False You can have an array that has a type constraint. (my Str @) ~~ Array[Str]; # True (my @ of Str) ~~ Array[Str]; # True Or you could check that all of the values of the Array are of some type. (my @ = )

Re: valid values?

2019-03-04 Thread ToddAndMargo via perl6-users
On 3/3/19 8:29 PM, Brad Gilbert wrote: It should be sub mysub(Int $value where 1|2|4|8|16) { say "Got $value" } :-)

Re: valid values?

2019-03-03 Thread Brad Gilbert
The `where` clause is already a smart-match, adding `~~` to it is not only redundant, it can cause confusing action at a distance. (By that I mean the right side of `where` is exactly the same as the right side of `~~`) You wouldn't write this: * ~~ (* ~~ 1|2|4|8|16) So don't write this

Re: valid values?

2019-03-03 Thread Fernando Santagata
On Sun, Mar 3, 2019 at 11:41 AM ToddAndMargo via perl6-users < perl6-users@perl.org> wrote: > That way I can catch bad values at compile time and not have > to wait and see what it gets fed. > The snippet I showed you doesn't intercepts wrong values at compile time, but rather at run time. --

Re: valid values?

2019-03-03 Thread Fernando Santagata
Hi Todd, is this what you're looking for? sub mysub(Int $value where * ~~ 1|2|4|8|16) { say "Got $value" } mysub 2; # Got 2 mysub 3; # Constraint type check failed in binding to parameter '$value'; expected anonymous constraint to be met but got Int (3) On Sun, Mar 3, 2019 at 11:09 AM