    {-# LANGUAGE CPP #-}

    -- | Unboxed @Vector@. Import as:

    --

    -- > import qualified RIO.Vector.Unboxed as VU

    --

    -- This module does not export any partial or unsafe functions.  For those, see

    -- "RIO.Vector.Unboxed.Partial" and "RIO.Vector.Unboxed.Unsafe"

    module RIO.Vector.Unboxed
      (
      -- * Unboxed vectors

        Data.Vector.Unboxed.Vector
      , Data.Vector.Unboxed.MVector(..)
      , Data.Vector.Unboxed.Unbox

      -- * Accessors

      -- ** Length information

      , Data.Vector.Unboxed.length
      , Data.Vector.Unboxed.null

      -- ** Indexing

      , (Data.Vector.Unboxed.!?)

      -- ** Extracting subvectors

      , Data.Vector.Unboxed.slice
      , Data.Vector.Unboxed.take
      , Data.Vector.Unboxed.drop
      , Data.Vector.Unboxed.splitAt

      -- * Construction

      -- ** Initialisation

      , Data.Vector.Unboxed.empty
      , Data.Vector.Unboxed.singleton
      , Data.Vector.Unboxed.replicate
      , Data.Vector.Unboxed.generate
      , Data.Vector.Unboxed.iterateN

      -- ** Monadic initialisation

      , Data.Vector.Unboxed.replicateM
      , Data.Vector.Unboxed.generateM
    #if MIN_VERSION_vector(0,12,0)
      , Data.Vector.Unboxed.iterateNM
    #endif
      , Data.Vector.Unboxed.create
    #if MIN_VERSION_vector(0,12,0)
      , Data.Vector.Unboxed.createT
    #endif

      -- ** Unfolding

      , Data.Vector.Unboxed.unfoldr
      , Data.Vector.Unboxed.unfoldrN
    #if MIN_VERSION_vector(0,12,0)
      , Data.Vector.Unboxed.unfoldrM
      , Data.Vector.Unboxed.unfoldrNM
    #endif
      , Data.Vector.Unboxed.constructN
      , Data.Vector.Unboxed.constructrN

      -- ** Enumeration

      , Data.Vector.Unboxed.enumFromN
      , Data.Vector.Unboxed.enumFromStepN
      , Data.Vector.Unboxed.enumFromTo
      , Data.Vector.Unboxed.enumFromThenTo

      -- ** Concatenation

      , Data.Vector.Unboxed.cons
      , Data.Vector.Unboxed.snoc
      , (Data.Vector.Unboxed.++)
      , Data.Vector.Unboxed.concat

      -- ** Restricting memory usage

      , Data.Vector.Unboxed.force

      -- * Modifying vectors

      -- ** Permutations

      , Data.Vector.Unboxed.reverse

      -- ** Safe destructive update

      , Data.Vector.Unboxed.modify

      -- * Elementwise operations

      -- ** Indexing

      , Data.Vector.Unboxed.indexed

      -- ** Mapping

      , Data.Vector.Unboxed.map
      , Data.Vector.Unboxed.imap
      , Data.Vector.Unboxed.concatMap

      -- ** Monadic mapping

      , Data.Vector.Unboxed.mapM
      , Data.Vector.Unboxed.imapM
      , Data.Vector.Unboxed.mapM_
      , Data.Vector.Unboxed.imapM_
      , Data.Vector.Unboxed.forM
      , Data.Vector.Unboxed.forM_

      -- ** Zipping

      , Data.Vector.Unboxed.zipWith
      , Data.Vector.Unboxed.zipWith3
      , Data.Vector.Unboxed.zipWith4
      , Data.Vector.Unboxed.zipWith5
      , Data.Vector.Unboxed.zipWith6
      , Data.Vector.Unboxed.izipWith
      , Data.Vector.Unboxed.izipWith3
      , Data.Vector.Unboxed.izipWith4
      , Data.Vector.Unboxed.izipWith5
      , Data.Vector.Unboxed.izipWith6
      , Data.Vector.Unboxed.zip
      , Data.Vector.Unboxed.zip3
      , Data.Vector.Unboxed.zip4
      , Data.Vector.Unboxed.zip5
      , Data.Vector.Unboxed.zip6

      -- ** Monadic zipping

      , Data.Vector.Unboxed.zipWithM
      , Data.Vector.Unboxed.izipWithM
      , Data.Vector.Unboxed.zipWithM_
      , Data.Vector.Unboxed.izipWithM_

      -- ** Unzipping

      , Data.Vector.Unboxed.unzip
      , Data.Vector.Unboxed.unzip3
      , Data.Vector.Unboxed.unzip4
      , Data.Vector.Unboxed.unzip5
      , Data.Vector.Unboxed.unzip6

      -- * Working with predicates

      -- ** Filtering

      , Data.Vector.Unboxed.filter
      , Data.Vector.Unboxed.ifilter
    #if MIN_VERSION_vector(0,12,0)
      , Data.Vector.Unboxed.uniq
      , Data.Vector.Unboxed.mapMaybe
      , Data.Vector.Unboxed.imapMaybe
    #endif
      , Data.Vector.Unboxed.filterM
      , Data.Vector.Unboxed.takeWhile
      , Data.Vector.Unboxed.dropWhile

      -- ** Partitioning

      , Data.Vector.Unboxed.partition
      , Data.Vector.Unboxed.unstablePartition
      , Data.Vector.Unboxed.span
      , Data.Vector.Unboxed.break

      -- ** Searching

      , Data.Vector.Unboxed.elem
      , Data.Vector.Unboxed.notElem
      , Data.Vector.Unboxed.find
      , Data.Vector.Unboxed.findIndex
      , Data.Vector.Unboxed.findIndices
      , Data.Vector.Unboxed.elemIndex
      , Data.Vector.Unboxed.elemIndices

      -- * Folding

      , Data.Vector.Unboxed.foldl
      , Data.Vector.Unboxed.foldl'
      , Data.Vector.Unboxed.foldr
      , Data.Vector.Unboxed.foldr'
      , Data.Vector.Unboxed.ifoldl
      , Data.Vector.Unboxed.ifoldl'
      , Data.Vector.Unboxed.ifoldr
      , Data.Vector.Unboxed.ifoldr'

      -- ** Specialised folds

      , Data.Vector.Unboxed.all
      , Data.Vector.Unboxed.any
      , Data.Vector.Unboxed.and
      , Data.Vector.Unboxed.or
      , Data.Vector.Unboxed.sum
      , Data.Vector.Unboxed.product

      -- ** Monadic folds

      , Data.Vector.Unboxed.foldM
      , Data.Vector.Unboxed.ifoldM
      , Data.Vector.Unboxed.foldM'
      , Data.Vector.Unboxed.ifoldM'
      , Data.Vector.Unboxed.foldM_
      , Data.Vector.Unboxed.ifoldM_
      , Data.Vector.Unboxed.foldM'_
      , Data.Vector.Unboxed.ifoldM'_

      -- * Prefix sums (scans)

      , Data.Vector.Unboxed.prescanl
      , Data.Vector.Unboxed.prescanl'
      , Data.Vector.Unboxed.postscanl
      , Data.Vector.Unboxed.postscanl'
      , Data.Vector.Unboxed.scanl
      , Data.Vector.Unboxed.scanl'
      , Data.Vector.Unboxed.prescanr
      , Data.Vector.Unboxed.prescanr'
      , Data.Vector.Unboxed.postscanr
      , Data.Vector.Unboxed.postscanr'
      , Data.Vector.Unboxed.scanr
      , Data.Vector.Unboxed.scanr'

      -- * Conversions

      -- ** Lists

      , Data.Vector.Unboxed.toList
      , Data.Vector.Unboxed.fromList
      , Data.Vector.Unboxed.fromListN

      -- ** Different vector types

      , Data.Vector.Unboxed.convert

      -- ** Mutable vectors

      , Data.Vector.Unboxed.freeze
      , Data.Vector.Unboxed.thaw
      , Data.Vector.Unboxed.copy
      ) where

    import qualified Data.Vector.Unboxed