module Bio.Utils.Vector ( (!?!) ) where import GHC.Stack (HasCallStack) import Data.Vector (Vector) import qualified Data.Vector as V ((!?), length) import Data.Maybe (fromMaybe) infix 9 !?! (!?!) :: (HasCallStack, Show a) => Vector a -> Int -> a !?! :: Vector a -> Int -> a (!?!) Vector a v Int i = a -> Maybe a -> a forall a. a -> Maybe a -> a fromMaybe ([Char] -> a forall a. HasCallStack => [Char] -> a error [Char] msg) (Maybe a -> a) -> Maybe a -> a forall a b. (a -> b) -> a -> b $ Vector a v Vector a -> Int -> Maybe a forall a. Vector a -> Int -> Maybe a V.!? Int i where msg :: String msg :: [Char] msg = [Char] "cobot-io: index " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Int -> [Char] forall a. Show a => a -> [Char] show Int i [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ [Char] " is out of bounds. Vector length is : " [Char] -> [Char] -> [Char] forall a. [a] -> [a] -> [a] ++ Int -> [Char] forall a. Show a => a -> [Char] show (Vector a -> Int forall a. Vector a -> Int V.length Vector a v)