module NHC.Vector ( Vector() , copy , new , (!) , update ) where import PreludeBuiltin(Vector) import _E foreign import ccall primCopyVectorC :: Vector a -> IO (Vector a) foreign import ccall primNewVectorC :: Int -> _E a -> IO (Vector a) foreign import ccall primVectorIndexC :: Vector a -> Int -> IO a foreign import ccall primUpdateVectorC :: Int -> _E a -> Vector a -> IO () copy :: Vector a -> IO (Vector a) copy = primCopyVectorC new :: Int -> a -> IO (Vector a) new n x = primNewVectorC n (_E x) (!) :: Vector a -> Int -> IO a (!) = primVectorIndexC update :: Vector a -> Int -> a -> IO () update v n x = primUpdateVectorC n (_E x) v