Now guess what! I managed to make the damned thing work in Pugs! Here is the slightly modified version that compiles and runs with current Pugs:
use v6;
sub my_while(Code $expr, Code $whileblock) {
while ($expr()) { $whileblock() };
}
my $i = 0;
my_while {$i < 10}, {
say "i: $i";
my $j = 0;
my_while {$j < 10}, {
say "j: $j";
$j++;
};
$i++;
};
What really surprized me was the fact that Pugs appears to do the right thing on closing closures, which I did not think should work right now. Also, do not really expect Pugs to verify whether
my_while is called with actual blocks or not, because it does not work. Moreover, it is astonishingly slow. But I keep on loving it...:-)