sub lazy_merge3 (@list is copy) returns Sub { my $last = 0; my &by_n = -> $n { my $k = 0; -> $x { $x ?? $k += $n :: $k } }; @list .= map:{ by_n $_ }; sub { my $low; for @list -> $sub { my $val = $sub(); $val = $sub() if $val <= $last; $low = $val unless $low && $low < $val; } $last = $low; } }