Помните ли вы статью про оператор последовательностей в Perl 6?
Последним аргументом он принимает ограничение, которое останавливает генерацию последовательности. К примеру
1, 2, 4 ... 32; # 1 2 4 8 16 32
1, 2, 4 ... * > 10; # 1 2 4 8 16
В первом случае используется числовое сравнение. Во втором запись * > 10 интерпретируется как замыкание -> $x { $x > 10 }.
Оператор последовательностей выполняет «волшебное» сравнение в зависимости от типа соответствия. Это сравнение называется «умным соответствием» («smartmatching»), и эта концепция появляется во многих местах Perl 6. Примеры:
Читать полностью »