{- Math.Clustering.Hierarchical.Spectral.Utility
Gregory W. Schwartz
Collects utility functions for the clustering section of the program.
-}
{-# LANGUAGE BangPatterns #-}
module Math.Clustering.Hierarchical.Spectral.Utility
( subsetVector
) where
-- Remote
import Data.Maybe (fromMaybe)
import qualified Data.Foldable as F
import qualified Data.Vector as V
-- Local
subsetVector :: V.Vector a -> [Int] -> V.Vector a
subsetVector xs =
V.fromList
. F.foldr' (\ !i !acc
-> ( fromMaybe (error "Out of bounds in subsetVector.")
$ xs V.!? i
) : acc
) []