module HaskellWorks.Data.RankSelect.CsPoppy.Internal.Vector ( indexOrZero , lastOrZero ) where import Data.Word import HaskellWorks.Data.AtIndex import HaskellWorks.Data.Positioning import qualified Data.Vector.Storable as DVS indexOrZero :: DVS.Vector Word64 -> Position -> Word64 indexOrZero :: Vector Word64 -> Position -> Word64 indexOrZero Vector Word64 _ Position i | Position i Position -> Position -> Bool forall a. Ord a => a -> a -> Bool < Position 0 = Word64 0 indexOrZero Vector Word64 v Position i | Position i Position -> Position -> Bool forall a. Ord a => a -> a -> Bool < Vector Word64 -> Position forall v. Length v => v -> Position end Vector Word64 v = Vector Word64 v Vector Word64 -> Position -> Elem (Vector Word64) forall v. AtIndex v => v -> Position -> Elem v !!! Position i indexOrZero Vector Word64 _ Position _ = Word64 0 {-# INLINE indexOrZero #-} lastOrZero :: DVS.Vector Word64 -> Word64 lastOrZero :: Vector Word64 -> Word64 lastOrZero Vector Word64 v | Position 0 Position -> Position -> Bool forall a. Ord a => a -> a -> Bool < Vector Word64 -> Position forall v. Length v => v -> Position end Vector Word64 v = Vector Word64 -> Word64 forall a. Storable a => Vector a -> a DVS.last Vector Word64 v lastOrZero Vector Word64 _ = Word64 0 {-# INLINE lastOrZero #-}