Improve length and null
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Sun, 29 Jan 2012 11:03:08 +0000 (11:03 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Sun, 29 Jan 2012 11:03:08 +0000 (11:03 +0000)
Data/Vector/Fusion/Stream.hs
Data/Vector/Fusion/Stream/Monadic.hs

index 9f4c80c..c872b5d 100644 (file)
@@ -142,12 +142,12 @@ sized = M.sized
 -- ------
 
 -- | Length of a 'Stream'
-length :: Vector v a => Stream v a -> Int
+length :: Stream v a -> Int
 {-# INLINE length #-}
 length = unId . M.length
 
 -- | Check if a 'Stream' is empty
-null :: Vector v a => Stream v a -> Bool
+null :: Stream v a -> Bool
 {-# INLINE null #-}
 null = unId . M.null
 
index 857fd03..df69003 100644 (file)
@@ -169,16 +169,14 @@ sized s sz = s { sSize = sz }
 -- ------
 
 -- | Length of a 'Stream'
-length :: (Monad m, Vector v a) => Stream m v a -> m Int
+length :: Monad m => Stream m v a -> m Int
 {-# INLINE_STREAM length #-}
-length Stream{sVector = Just v} = return (basicLength v)
 length Stream{sSize = Exact n}  = return n
 length s = vfoldl' (\n (Chunk k _) -> n+k) 0 s
 
 -- | Check if a 'Stream' is empty
-null :: (Monad m, Vector v a) => Stream m v a -> m Bool
+null :: Monad m => Stream m v a -> m Bool
 {-# INLINE_STREAM null #-}
-null Stream{sVector = Just v} = return (basicLength v == 0)
 null Stream{sSize = Exact n} = return (n == 0)
 null Stream{sChunks = Unf step s} = null_loop s
   where