Из документации
duckmap
применит&block
к каждому элементу и вернет новый список с определенными возвращаемыми значениями блока. Для неопределенных возвращаемых значенийduckmap
попытается спуститься в элемент, если этот элемент реализуетIterable
.
Но потом:
my $list = [[1,2,3],[[4,5],6,7]];
say $list.deepmap( *² ); # [[1 4 9] [[16 25] 36 49]]
say $list.duckmap( *² ); # [9 9]
deepmap ведет себя примерно так, как ожидалось, но я не могу понять, что такое duckmap
делает.
Этот вопрос связан с этой проблемой в perl6 / doc. Ее можно решить, сказав: «Они не могут быть более разными», но я хотел бы найти несколько примеров, где они делают то же самое, а когда нет, попытайтесь понять, что действительно происходит.
[9,9]
возводит в квадрат количество элементов в подсписках. Попробуйте добавить или удалить элемент для проверки. Помимо других полезных ответов, усилия по документации могут найти интересный S32-list / duckmap.t: github.com/perl6/roast/blob/master/S32-list/duckmap.t - person mr_ron   schedule 06.05.2018