Eq and Ord instances
[darcs-mirrors/vector.git] / Data / Vector / IVector.hs
index 1688b6b..e3e0370 100644 (file)
@@ -35,6 +35,9 @@ module Data.Vector.IVector (
   -- * Mapping and zipping
   map, zipWith,
 
+  -- * Comparisons
+  eq, cmp,
+
   -- * Filtering
   filter, takeWhileSlice, takeWhile, dropWhileSlice, dropWhile,
 
@@ -308,6 +311,17 @@ zipWith :: (IVector v a, IVector v b, IVector v c) => (a -> b -> c) -> v a -> v
 {-# INLINE zipWith #-}
 zipWith f xs ys = unstream (Stream.zipWith f (stream xs) (stream ys))
 
+-- Comparisons
+-- -----------
+
+eq :: (IVector v a, Eq a) => v a -> v a -> Bool
+{-# INLINE eq #-}
+xs `eq` ys = stream xs == stream ys
+
+cmp :: (IVector v a, Ord a) => v a -> v a -> Ordering
+{-# INLINE cmp #-}
+cmp xs ys = compare (stream xs) (stream ys)
+
 -- Filtering
 -- ---------