Use unsafeSlice in take and drop
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 10 Dec 2009 12:09:22 +0000 (12:09 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 10 Dec 2009 12:09:22 +0000 (12:09 +0000)
Data/Vector/Generic.hs

index bdcb73a..8236c93 100644 (file)
@@ -472,13 +472,13 @@ tail v = slice 1 (length v - 1) v
 -- | Yield the first @n@ elements without copying.
 take :: Vector v a => Int -> v a -> v a
 {-# INLINE_STREAM take #-}
-take n v = slice 0 (min n' (length v)) v
+take n v = unsafeSlice 0 (min n' (length v)) v
   where n' = max n 0
 
 -- | Yield all but the first @n@ elements without copying.
 drop :: Vector v a => Int -> v a -> v a
 {-# INLINE_STREAM drop #-}
-drop n v = slice (min n' len) (max 0 (len - n')) v
+drop n v = unsafeSlice (min n' len) (max 0 (len - n')) v
   where n' = max n 0
         len = length v