HQu-0.0.0.0: src/Q/SortedVector.hs
{-# LANGUAGE FlexibleContexts #-}
module Q.SortedVector
(
fromList
, fromVector
, fromSortedList
, SortedVector(..)
, minElement
, maxElement
) where
import qualified Data.Vector.Algorithms.Merge as V (sort)
import Data.Vector.Storable (Storable)
import qualified Data.Vector.Storable as V (Vector (..), fromList, length, head, last, modify)
import Q.Types
newtype SortedVector a = SortedVector (V.Vector a)
fromList as = SortedVector (V.modify V.sort $ V.fromList as)
fromVector v = SortedVector (V.modify V.sort v)
fromSortedList xs = SortedVector $ V.fromList xs
minElement (SortedVector v) = V.head v
maxElement (SortedVector v) = V.last v