Это может быть случай, когда длина заданного списка уже известна, и ее не нужно вычислять заново.Таким образом, это может рассматриваться как оптимизация.
Кроме того, в общем случае результирующий список не обязательно должен иметь такой же размер, как и исходный.Таким образом, этот аргумент может быть использован для установки этой длины.
Это верно для первоначальной идеи Олега (источник - http://okmij.org/ftp/Haskell/perfect-shuffle.txt):
-- examples
t1 = shuffle1 ['a','b','c','d','e'] [0,0,0,0]
-- "abcde"
-- Note, that rseq of all zeros leaves the sequence unperturbed.
t2 = shuffle1 ['a','b','c','d','e'] [4,3,2,1]
-- "edcba"
-- The rseq of (n-i | i<-[1..n-1]) reverses the original sequence of elements
Однако, это не то же самое дляРеализация пакета 'random-shuffle':
> shuffle [0..10] [0,0,0,0]
[0,1,2,3random-shuffle.hs: [shuffle] called with lists of different lengths
Я думаю, что стоит проконсультироваться с сопровождающими пакетов, чтобы понять контракт этой функции.