Hi Bruce, This is what I see with Rakudo 2020.10 (all code below performs delightfully as expected):
user@mbook:~$ raku Welcome to ๐๐๐ค๐ฎ๐๐จโข v2020.10. Implementing the ๐๐๐ค๐ฎโข programming language v6.d. Built on MoarVM version 2020.10. To exit type 'exit' or '^D' > ? (any(4,3) ~~ 3) True > ? (3 ~~ any(4,3)) True > given any(4,3) { when 3 {say '3'}; say 'nope'} 3 > given any(4,3) { when 3 {say '3'}; say 'nope'} 3 > given 3 { when any(4,3) {say '3'}; say 'nope'} 3 > given any(4,3) { say .raku } any(4, 3) > ? (any(4,3) ~~ 3) True > any(4,3) ~~ 3 True > none(4,3) ~~ 3 False > one(4,3) ~~ 3 True > all(4,3) ~~ 3 False > given any(4,3) { when 3 {say 'TRUE'}; say 'FALSE'; }; TRUE > given any(4,3) { when 4 {say 'TRUE'}; say 'FALSE'; }; TRUE > given any(4,3) { when 5 {say 'TRUE'}; say 'FALSE'; }; FALSE > given any(4,3) { when 3|4|5 {say 'TRUE'}; say 'FALSE'; }; TRUE > given any(4,3) { when 3||4||5 {say 'TRUE'}; say 'FALSE'; }; TRUE > given any(4,3) { when 5||4||3 {say 'TRUE'}; say 'FALSE'; }; FALSE > given any(4,3) { when 5||4|3 {say 'TRUE'}; say 'FALSE'; }; FALSE > given any(4,3) { when 5|4|3 {say 'TRUE'}; say 'FALSE'; }; TRUE > HTH, Bill. On Mon, May 31, 2021 at 12:45 AM Bruce Gray <robertbrucegr...@gmail.com> wrote: > > > > On May 30, 2021, at 9:18 PM, yary <not....@gmail.com> wrote: > > > > This came up in today's Raku study group (my own golfing-) > > > > > ? (any(4,3) ~~ 3) > > True > > > ? (3 ~~ any(4,3)) > > True > > > given any(4,3) { when 3 {say '3'}; say 'nope'} > > nope > > > given 3 { when any(4,3) {say '3'}; say 'nope'} > > 3 > > > given any(4,3) { say .raku } > > any(4, 3) > > > > why does Raku say 'nope' for the example "given any(4,3) { when 3 {say > '3'}; say 'nope'}" > > > > Since this expression is true ? (any(4,3) ~~ 3) > > I expected the "given 4|3" to also match "when 3" > > > > -y > > This looks very version dependent, and I would not have expected it to be > version dependent at all. > > Summary of behavior across versions. True means `given any(4,3) { when > 3...` does match just like its converse, and False means it does not match. > I have noted possible false negatives; 3 of the docker build have MoarVM > versions newer than the Rakudo versions. Possible build error? > False 2020.[1..2] (But suspect, since the VM reported version > 2020.12) > True 2020.[5..9] > False 2020.10 (But suspect, since the VM reported version > 2020.12) > True 2020.11 > False 2020.12 through nightly (which was 4 hours ago) > > Full detail: > (All run on JJ's alpine docker images (Thanks JJ!), but on a Windows box > (hence the double-quotes), because Docker is hosed on my Macbook.) > C:\Users\bruce>copy con yary_03.bat > @echo off > docker run --rm -it jjmerelo/alpine-raku:2020.01 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.02 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.05 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.05.1 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.06 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.07 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.08 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.08.1 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.08.2 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.09 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.10 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.11 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2020.12 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2021.02 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2021.02.1 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2021.03 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2021.04 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:2021.05 -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:latest -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > docker run --rm -it jjmerelo/alpine-raku:nightly -e "print > $*VM.version; given any(4,3) { when 3 {say True}; say False; };" > ^Z > 1 file(s) copied. > > C:\Users\bruce>yary_03.bat > 2020.12False > 2020.12False > 2020.05True > 2020.05True > 2020.06True > 2020.07True > 2020.07.16.g.03.d.3.e.43.faTrue > 2020.08True > 2020.08True > 2020.09True > 2020.12False > 2020.11True > 2020.12False > 2021.02False > 2021.02False > 2021.03False > 2021.04False > 2021.05False > 2021.05False > 2021.05False > > > In https://github.com/MoarVM/MoarVM/blob/master/docs/ChangeLog , I see > nothing in 2020.11 that looks like the culprit. > In https://github.com/rakudo/rakudo/blob/master/docs/ChangeLog , I see > nothing in 2020.11 that looks like the culprit, but that big change in > coersion ("new coertion semanticsโ) was big enough to make that a good > candidate for proper bisecting. > (but not by me; I am out of time for this week) > > โ > Hope this helps, > Bruce Gray (Util of PerlMonks) > >