Fusible (//)
[darcs-mirrors/vector.git] / Data / Vector / IVector.hs
index fa668e9..b0569c4 100644 (file)
@@ -29,6 +29,9 @@ module Data.Vector.IVector (
   -- * Subvectors
   slice, extract, takeSlice, take, dropSlice, drop,
 
+  -- * Permutations
+  (//),
+
   -- * Mapping and zipping
   map, zipWith,
 
@@ -277,6 +280,14 @@ drop n = unstream . Stream.drop n . stream
 
   #-}
 
+-- Permutations
+-- ------------
+
+(//) :: IVector v a => v a -> [(Int, a)] -> v a
+{-# INLINE (//) #-}
+v // us = new (Mut.update (Mut.unstream (stream v))
+                          (Stream.fromList us))
+
 -- Mapping/zipping
 -- ---------------