Add all, any
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 9 Dec 2009 00:02:41 +0000 (00:02 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Wed, 9 Dec 2009 00:02:41 +0000 (00:02 +0000)
Data/Vector.hs
Data/Vector/Generic.hs
Data/Vector/Primitive.hs
Data/Vector/Storable.hs
Data/Vector/Unboxed.hs

index 1d6301a..7cee390 100644 (file)
@@ -53,7 +53,8 @@ module Data.Vector (
   ifoldl, ifoldl', ifoldr,
 
   -- * Specialised folds
-  and, or, sum, product,
+  all, any, and, or,
+  sum, product,
   maximum, maximumBy, minimum, minimumBy,
   minIndex, minIndexBy, maxIndex, maxIndexBy,
 
@@ -92,7 +93,7 @@ import Prelude hiding ( length, null,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
                         foldl, foldl1, foldr, foldr1,
-                        and, or, sum, product, minimum, maximum,
+                        all, any, and, or, sum, product, minimum, maximum,
                         scanl, scanl1,
                         enumFromTo, enumFromThenTo )
 
@@ -559,6 +560,14 @@ ifoldr = G.ifoldr
 -- Specialised folds
 -- -----------------
 
+all :: (a -> Bool) -> Vector a -> Bool
+{-# INLINE all #-}
+all = G.all
+
+any :: (a -> Bool) -> Vector a -> Bool
+{-# INLINE any #-}
+any = G.any
+
 and :: Vector Bool -> Bool
 {-# INLINE and #-}
 and = G.and
index bfc2e1e..c082e8f 100644 (file)
@@ -57,7 +57,8 @@ module Data.Vector.Generic (
   ifoldl, ifoldl', ifoldr,
  
   -- * Specialised folds
-  and, or, sum, product,
+  all, any, and, or,
+  sum, product,
   maximum, maximumBy, minimum, minimumBy,
   minIndex, minIndexBy, maxIndex, maxIndexBy,
 
@@ -109,7 +110,7 @@ import Prelude hiding ( length, null,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
                         foldl, foldl1, foldr, foldr1,
-                        and, or, sum, product, maximum, minimum,
+                        all, any, and, or, sum, product, maximum, minimum,
                         scanl, scanl1,
                         enumFromTo, enumFromThenTo )
 
@@ -849,6 +850,14 @@ ifoldr f z = Stream.foldr (uncurry f) z . Stream.indexed . stream
 -- Specialised folds
 -- -----------------
 
+all :: Vector v a => (a -> Bool) -> v a -> Bool
+{-# INLINE all #-}
+all f = Stream.and . Stream.map f . stream
+
+any :: Vector v a => (a -> Bool) -> v a -> Bool
+{-# INLINE any #-}
+any f = Stream.or . Stream.map f . stream
+
 and :: Vector v Bool => v Bool -> Bool
 {-# INLINE and #-}
 and = Stream.and . stream
index bfa71d8..4cec20b 100644 (file)
@@ -49,6 +49,7 @@ module Data.Vector.Primitive (
   ifoldl, ifoldl', ifoldr,
 
   -- * Specialised folds
+  all, any,
   sum, product,
   maximum, maximumBy, minimum, minimumBy,
   minIndex, minIndexBy, maxIndex, maxIndexBy,
@@ -89,7 +90,7 @@ import Prelude hiding ( length, null,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
                         foldl, foldl1, foldr, foldr1,
-                        sum, product, minimum, maximum,
+                        all, any, sum, product, minimum, maximum,
                         scanl, scanl1,
                         enumFromTo, enumFromThenTo )
 
@@ -491,6 +492,14 @@ ifoldr = G.ifoldr
 -- Specialised folds
 -- -----------------
 
+all :: Prim a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE all #-}
+all = G.all
+
+any :: Prim a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE any #-}
+any = G.any
+
 sum :: (Prim a, Num a) => Vector a -> a
 {-# INLINE sum #-}
 sum = G.sum
index a3a903f..43f933e 100644 (file)
@@ -49,7 +49,8 @@ module Data.Vector.Storable (
   ifoldl, ifoldl', ifoldr,
 
   -- * Specialised folds
-  and, or, sum, product,
+  all, any, and, or,
+  sum, product,
   maximum, maximumBy, minimum, minimumBy,
   minIndex, minIndexBy, maxIndex, maxIndexBy,
 
@@ -93,7 +94,7 @@ import Prelude hiding ( length, null,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
                         foldl, foldl1, foldr, foldr1,
-                        and, or, sum, product, minimum, maximum,
+                        all, any, and, or, sum, product, minimum, maximum,
                         scanl, scanl1,
                         enumFromTo, enumFromThenTo )
 
@@ -526,6 +527,14 @@ ifoldr = G.ifoldr
 -- Specialised folds
 -- -----------------
 
+all :: Storable a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE all #-}
+all = G.all
+
+any :: Storable a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE any #-}
+any = G.any
+
 and :: Vector Bool -> Bool
 {-# INLINE and #-}
 and = G.and
index 2f36875..3b5d76e 100644 (file)
@@ -51,7 +51,8 @@ module Data.Vector.Unboxed (
   ifoldl, ifoldl', ifoldr,
 
   -- * Specialised folds
-  and, or, sum, product,
+  all, any, and, or,
+  sum, product,
   maximum, maximumBy, minimum, minimumBy,
   minIndex, minIndexBy, maxIndex, maxIndexBy,
 
@@ -88,7 +89,7 @@ import Prelude hiding ( length, null,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
                         foldl, foldl1, foldr, foldr1,
-                        and, or, sum, product, minimum, maximum,
+                        all, any, and, or, sum, product, minimum, maximum,
                         scanl, scanl1,
                         enumFromTo, enumFromThenTo )
 
@@ -481,6 +482,14 @@ ifoldr = G.ifoldr
 -- Specialised folds
 -- -----------------
 
+all :: Unbox a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE all #-}
+all = G.all
+
+any :: Unbox a => (a -> Bool) -> Vector a -> Bool
+{-# INLINE any #-}
+any = G.any
+
 and :: Vector Bool -> Bool
 {-# INLINE and #-}
 and = G.and