Implement reverse and it's test
authorMax Bolingbroke <batterseapower@hotmail.com>
Mon, 9 Feb 2009 14:08:04 +0000 (14:08 +0000)
committerMax Bolingbroke <batterseapower@hotmail.com>
Mon, 9 Feb 2009 14:08:04 +0000 (14:08 +0000)
Data/Vector/IVector.hs
tests/Properties.hs

index d7484c8..8cb0435 100644 (file)
@@ -31,7 +31,7 @@ module Data.Vector.IVector (
   slice, init, tail, take, drop,
 
   -- * Permutations
-  accum, (//), update, backpermute,
+  (//), update, bpermute,
 
   -- * Mapping and zipping
   map, zipWith, zip,
@@ -92,7 +92,7 @@ import Control.Exception ( assert )
 import Prelude hiding ( length, null,
                         replicate, (++),
                         head, last,
-                        init, tail, take, drop,
+                        init, tail, take, drop, reverse,
                         map, zipWith, zip,
                         filter, takeWhile, dropWhile,
                         elem, notElem,
@@ -378,6 +378,10 @@ backpermute :: (IVector v a, IVector v Int) => v a -> v Int -> v a
 {-# INLINE backpermute #-}
 backpermute v is = v `seq` map (v!) is
 
+reverse :: (IVector v a) => v a -> v a
+{-# INLINE reverse #-}
+reverse = new . New.reverse . New.unstream . stream
+
 -- Mapping/zipping
 -- ---------------
 
index d36ff6c..760047d 100644 (file)
@@ -56,7 +56,7 @@ testVersusLists _ = [
             --testProperty "concat"       prop_concat,
             testProperty "length"       prop_length,
             testProperty "null"         prop_null,
-            --testProperty "reverse"      prop_reverse,
+            testProperty "reverse"      prop_reverse,
             --testProperty "all"          prop_all,
             --testProperty "any"          prop_any,
             testProperty "and"          prop_and,
@@ -101,7 +101,7 @@ testVersusLists _ = [
     --prop_concat       = (V.concat :: [v a] -> v a)                    `eq1` concat
     prop_length       = (V.length :: v a -> Int)                      `eq1` length
     prop_null         = (V.null :: v a -> Bool)                       `eq1` null
-    --prop_reverse      = (V.reverse :: v a -> v a)                     `eq1` reverse
+    prop_reverse      = (V.reverse :: v a -> v a)                     `eq1` reverse
     --prop_all          = (V.all :: (a -> Bool) -> v a -> Bool)         `eq2` all
     --prop_any          = (V.any :: (a -> Bool) -> v a -> Bool)         `eq2` any
     prop_and          = (V.and :: v Bool -> Bool)                     `eq1` and