Raku By Example
View me onGitHub
## last a LABEL in for loop

constant MAX_ROLLS = 10;

ROLL:
for 1..MAX_ROLLS+1 -> $r {
    last ROLL if $r > MAX_ROLLS;

    given (1..6).roll {
        when 6 {
            say "Roll $r: you win!";
            last ROLL;
        }
        default {
            say "Roll $r: sorry...";
        }
    }

    LAST {
        say "You lost, better luck next time!" if $r > MAX_ROLLS;
    }
}

## next a LABEL in for loop

lazy gather {
     CANDIDATE: for  2 .. 110 -> $candidate {
         for  2 .. sqrt $candidate  -> $divisor {
            next CANDIDATE if $candidate % $divisor == 0;
         }
        take $candidate;
     }
 } ==> my @vals;

say @vals[10];
say now - INIT now;

## LAST Parser

constant N = 5;
for flat (1..6).roll xx * Z 1..N -> $_, $n {
    print "roll $n: $_ ";

    when 6 {
        put "(won)";
        last;
    }

    default {
        put "(lost)";
    }

    LAST {
        print "result: ";
        when 6 { put "winner :)" }
        default { put "loser :(" }
    }
}