Couple of combinators
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Fri, 11 Jul 2008 08:27:35 +0000 (08:27 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Fri, 11 Jul 2008 08:27:35 +0000 (08:27 +0000)
Data/Vector/Base.hs

index c2a954a..ae88f17 100644 (file)
@@ -47,6 +47,10 @@ infixr ++
 {-# INLINE (++) #-}
 v ++ w = unstream (stream v Stream.++ stream w)
 
 {-# INLINE (++) #-}
 v ++ w = unstream (stream v Stream.++ stream w)
 
+filter :: Base v a => (a -> Bool) -> v a -> v a
+{-# INLINE filter #-}
+filter f = unstream . Stream.filter f . stream
+
 map :: (Base v a, Base v b) => (a -> b) -> v a -> v b
 {-# INLINE map #-}
 map f = unstream . Stream.map f . stream
 map :: (Base v a, Base v b) => (a -> b) -> v a -> v b
 {-# INLINE map #-}
 map f = unstream . Stream.map f . stream
@@ -63,3 +67,11 @@ sum :: (Base v a, Num a) => v a -> a
 {-# INLINE sum #-}
 sum = foldl' (+) 0
 
 {-# INLINE sum #-}
 sum = foldl' (+) 0
 
+toList :: Base v a => v a -> [a]
+{-# INLINE toList #-}
+toList = Stream.toList . stream
+
+fromList :: Base v a => [a] -> v a
+{-# INLINE fromList #-}
+fromList = unstream . Stream.fromList
+