Add IVector.null
authorRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 16 Oct 2008 00:56:36 +0000 (00:56 +0000)
committerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Thu, 16 Oct 2008 00:56:36 +0000 (00:56 +0000)
Data/Vector/IVector.hs

index 9db6dc7..9820dfe 100644 (file)
@@ -19,7 +19,7 @@ module Data.Vector.IVector (
   IVector,
 
   -- * Length information
-  length,
+  length, null,
 
   -- * Construction
   empty, singleton, cons, snoc, replicate, (++), copy,
@@ -80,7 +80,7 @@ import           Data.Vector.Fusion.Stream.Size
 
 import Control.Exception ( assert )
 
-import Prelude hiding ( length,
+import Prelude hiding ( length, null,
                         replicate, (++),
                         head, last,
                         init, tail, take, drop,
@@ -201,6 +201,17 @@ length v = vlength v
 
   #-}
 
+null :: IVector v a => v a -> Bool
+{-# INLINE_STREAM null #-}
+null v = vlength v == 0
+
+{-# RULES
+
+"null/unstream [IVector]" forall v s.
+  null (new' v (New.unstream s)) = Stream.null s
+
+  #-}
+
 -- Construction
 -- ------------