|
04:57
sjn left,
sjn joined
08:10
dakkar joined
11:29
TempIRCLogger left,
TempIRCLogger joined
16:35
dakkar left
|
|||
| Nemokosch | Hello again, this time I simply brought Python | 18:35 | |
| ```py | |||
| answer in ('yes', 'no', 'maybe', 'whatever') | |||
| ``` | |||
| so I'd like to do something like this in Raku | |||
| how do I do it? | |||
| lizmat | $answer (elem) <yes no maybe whatever> | ||
| or: $answer ∈ <yes no maybe whatever> | 18:36 | ||
| Nemokosch | oh so it works without extra quoting | ||
| thanks; I still got the quotes wrong here and there | 18:37 | ||
| lizmat | <foo bar baz> is the equivalent of ('foo','bar','baz') | ||
| Nemokosch | yes, I'm supposed to know that... actually sometimes I get confused by the gist output | 18:43 | |
| lizmat | gist is just that: it's a gist, it's not code :-) | 18:45 | |
| Nahita | m:``` | 18:46 | |
| say <yes no maybe whatever>.raku; | |||
| ``` | |||
| lizmat | ("yes", "no", "maybe", "whatever") | 18:47 | |
| actually, this is shorter: | |||
| dd <yes no maybe whatever> | |||
| it calls .raku on whatever you give it, and does some more introspection | 18:48 | ||
| gfldex | m:``` | 21:42 | |
| multi sub infix:<in>(\needle, List \l) { l.first(needle) ?? True !! False } | |||
| multi sub infix:<in>(\needle, Iterable \l) { l.list.first(needle) ?? True !! False } | |||
| multi sub infix:<in>(\needle, Str \s) { s.contains(needle) ?? True !! False } | |||
| say 'foo' in 'foobar'; | |||
| say 'foo' in 'barbuzz'; | |||
| say '1' in <1 2 3>; | |||
| say '1' in <0 2 3>; | |||
| ``` | |||
| <@!297037173541175296> if you really like the in operation, you can define a new operator ofc. ^^^ | |||
| Nemokosch | cool 😎 😄 | 22:18 | |
| avuserow | You can also use junctions: `$answer eq any(<yes no maybe whatever>)` | 23:39 | |
| Nemokosch | also cool | 23:54 | |
| however... | |||
| ```perl | |||
| constant \choices = {1 => ('old', "old_$basis-postfix"), 2 => ('new', 'old'), 3 => ('new', 'old', "old_$basis-postfix")}; | |||
| if $choice.Str (elem) '1'..'3' { | |||
| run 'meld', slip(choices{$choice}); | |||
| } | |||
| ``` | |||
| this really hurt my brain | 23:55 | ||
| first of all, $choice came from prompt and it was some IntStr hybrid that fails on the (elem) operator without conversion. How should I more reasonably check for it? | 23:56 | ||
| And why does it pass for a hash index as expected if it fails the (elem) check? | |||
| The more troublesome thing is, choices{$choice} is a scalar list apparently | 23:57 | ||
| it took me a lot of time to figure this problem out | |||
| slip comes to save the day but how can I have the elements as normal, list-lists? | 23:58 | ||