module Indexation.FoldM.Basic
where

import Indexation.Prelude
import Control.Foldl
import qualified Data.Vector.Unboxed as UnboxedVector
import qualified Data.Vector.Unboxed.Mutable as MutableUnboxedVector


countIndices :: Int -> FoldM IO Int (UnboxedVector.Vector Word32)
countIndices amount = FoldM step init extract where
  init = MutableUnboxedVector.new amount
  step mv index = MutableUnboxedVector.modify mv succ index $> mv
  extract = UnboxedVector.unsafeFreeze