Похоже, он создает массив длиной len - 1
, что в вашем случае равно 9.Что дает вам индексы в диапазоне [0-8].Я согласен, что документация может быть более понятной.
Если вы посмотрите на источник, select
реализован в терминах selectChunkedP
:
-- | Select indices matching a predicate, in parallel.
-- The array is chunked up, with one chunk being given to each thread.
-- The number of elements in the result array depends on how many threads
-- you're running the program with.
selectChunkedP
:: forall a
. Unbox a
=> (Int -> Bool) -- ^ See if this predicate matches.
-> (Int -> a) -- .. and apply fn to the matching index
-> Int -- Extent of indices to apply to predicate.
Видимо, 'степень индексов'для данного n
включает все индексы x
такие, что 0 <= x < (n-1)
:
Prelude Data.Array.Repa> extent $ select (const True) id 10
Z :. 9