vector-text 1.1.3 → 1.1.5
raw patch · 2 files changed
+6/−5 lines, 2 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.Container.Vector: concat :: Vector v a => [v a] -> v a
+ Data.Container.Vector: concatMap :: (Vector v a, Vector v b) => a -> v b -> v a -> v b
+ Data.Container.Vector: cons :: Vector v a => a -> v a -> v a
+ Data.Container.Vector: imap :: (Vector v a, Vector v b) => Int -> a -> b -> v a -> v b
+ Data.Container.Vector: length :: Vector v a => v a -> Int
+ Data.Container.Vector: map :: (Vector v a, Vector v b) => a -> b -> v a -> v b
+ Data.Container.Vector: null :: Vector v a => v a -> Bool
+ Data.Container.Vector: singleton :: Vector v a => a -> v a
+ Data.Container.Vector: snoc :: Vector v a => v a -> a -> v a
+ Data.Container.Vector: span :: Vector v a => a -> Bool -> v a -> (v a, v a)
+ Data.Container.Vector: splitAt :: Vector v a => Int -> v a -> (v a, v a)
+ Data.Container.Vector: unsafeDrop :: Vector v a => Int -> v a -> v a
+ Data.Container.Vector: unsafeHead :: Vector v a => v a -> a
+ Data.Container.Vector: unsafeIndex :: Vector v a => v a -> Int -> a
+ Data.Container.Vector: unsafeInit :: Vector v a => v a -> v a
+ Data.Container.Vector: unsafeLast :: Vector v a => v a -> a
+ Data.Container.Vector: unsafeSlice :: Vector v a => Int -> Int -> v a -> v a
+ Data.Container.Vector: unsafeTail :: Vector v a => v a -> v a
+ Data.Container.Vector: unsafeTake :: Vector v a => Int -> v a -> v a
+ Data.Text32: (!) :: Unbox a => Vector a -> Int -> a
+ Data.Text32: (!?) :: Unbox a => Vector a -> Int -> Maybe a
+ Data.Text32: (++) :: Unbox a => Vector a -> Vector a -> Vector a
+ Data.Text32: (//) :: Unbox a => Vector a -> [(Int, a)] -> Vector a
+ Data.Text32: accum :: Unbox a => a -> b -> a -> Vector a -> [(Int, b)] -> Vector a
+ Data.Text32: accumulate :: (Unbox a, Unbox b) => a -> b -> a -> Vector a -> Vector (Int, b) -> Vector a
+ Data.Text32: accumulate_ :: (Unbox a, Unbox b) => a -> b -> a -> Vector a -> Vector Int -> Vector b -> Vector a
+ Data.Text32: all :: Unbox a => a -> Bool -> Vector a -> Bool
+ Data.Text32: and :: Vector Bool -> Bool
+ Data.Text32: any :: Unbox a => a -> Bool -> Vector a -> Bool
+ Data.Text32: backpermute :: Unbox a => Vector a -> Vector Int -> Vector a
+ Data.Text32: break :: Unbox a => a -> Bool -> Vector a -> (Vector a, Vector a)
+ Data.Text32: class (Vector Vector a, MVector MVector a) => Unbox a
+ Data.Text32: commonPrefixes :: (Vector v a, Eq a) => v a -> v a -> Maybe (v a, v a, v a)
+ Data.Text32: concat :: Unbox a => [Vector a] -> Vector a
+ Data.Text32: concatMap :: (Unbox a, Unbox b) => a -> Vector b -> Vector a -> Vector b
+ Data.Text32: cons :: Unbox a => a -> Vector a -> Vector a
+ Data.Text32: constructN :: Unbox a => Int -> Vector a -> a -> Vector a
+ Data.Text32: constructrN :: Unbox a => Int -> Vector a -> a -> Vector a
+ Data.Text32: convert :: (Vector v a, Vector w a) => v a -> w a
+ Data.Text32: copy :: (Unbox a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ Data.Text32: create :: Unbox a => forall s. () => ST s MVector s a -> Vector a
+ Data.Text32: createT :: (Traversable f, Unbox a) => forall s. () => ST s f MVector s a -> f Vector a
+ Data.Text32: drop :: Unbox a => Int -> Vector a -> Vector a
+ Data.Text32: dropWhile :: Unbox a => a -> Bool -> Vector a -> Vector a
+ Data.Text32: elem :: (Unbox a, Eq a) => a -> Vector a -> Bool
+ Data.Text32: elemIndex :: (Unbox a, Eq a) => a -> Vector a -> Maybe Int
+ Data.Text32: elemIndices :: (Unbox a, Eq a) => a -> Vector a -> Vector Int
+ Data.Text32: empty :: Unbox a => Vector a
+ Data.Text32: enumFromN :: (Unbox a, Num a) => a -> Int -> Vector a
+ Data.Text32: enumFromStepN :: (Unbox a, Num a) => a -> a -> Int -> Vector a
+ Data.Text32: enumFromThenTo :: (Unbox a, Enum a) => a -> a -> a -> Vector a
+ Data.Text32: enumFromTo :: (Unbox a, Enum a) => a -> a -> Vector a
+ Data.Text32: filter :: Unbox a => a -> Bool -> Vector a -> Vector a
+ Data.Text32: filterM :: (Monad m, Unbox a) => a -> m Bool -> Vector a -> m Vector a
+ Data.Text32: find :: Unbox a => a -> Bool -> Vector a -> Maybe a
+ Data.Text32: findIndex :: Unbox a => a -> Bool -> Vector a -> Maybe Int
+ Data.Text32: findIndices :: Unbox a => a -> Bool -> Vector a -> Vector Int
+ Data.Text32: fold1M :: (Monad m, Unbox a) => a -> a -> m a -> Vector a -> m a
+ Data.Text32: fold1M' :: (Monad m, Unbox a) => a -> a -> m a -> Vector a -> m a
+ Data.Text32: fold1M'_ :: (Monad m, Unbox a) => a -> a -> m a -> Vector a -> m ()
+ Data.Text32: fold1M_ :: (Monad m, Unbox a) => a -> a -> m a -> Vector a -> m ()
+ Data.Text32: foldM :: (Monad m, Unbox b) => a -> b -> m a -> a -> Vector b -> m a
+ Data.Text32: foldM' :: (Monad m, Unbox b) => a -> b -> m a -> a -> Vector b -> m a
+ Data.Text32: foldM'_ :: (Monad m, Unbox b) => a -> b -> m a -> a -> Vector b -> m ()
+ Data.Text32: foldM_ :: (Monad m, Unbox b) => a -> b -> m a -> a -> Vector b -> m ()
+ Data.Text32: foldl :: Unbox b => a -> b -> a -> a -> Vector b -> a
+ Data.Text32: foldl' :: Unbox b => a -> b -> a -> a -> Vector b -> a
+ Data.Text32: foldl1 :: Unbox a => a -> a -> a -> Vector a -> a
+ Data.Text32: foldl1' :: Unbox a => a -> a -> a -> Vector a -> a
+ Data.Text32: foldr :: Unbox a => a -> b -> b -> b -> Vector a -> b
+ Data.Text32: foldr' :: Unbox a => a -> b -> b -> b -> Vector a -> b
+ Data.Text32: foldr1 :: Unbox a => a -> a -> a -> Vector a -> a
+ Data.Text32: foldr1' :: Unbox a => a -> a -> a -> Vector a -> a
+ Data.Text32: forM :: (Monad m, Unbox a, Unbox b) => Vector a -> a -> m b -> m Vector b
+ Data.Text32: forM_ :: (Monad m, Unbox a) => Vector a -> a -> m b -> m ()
+ Data.Text32: force :: Unbox a => Vector a -> Vector a
+ Data.Text32: freeze :: (Unbox a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ Data.Text32: fromList :: Unbox a => [a] -> Vector a
+ Data.Text32: fromListN :: Unbox a => Int -> [a] -> Vector a
+ Data.Text32: generate :: Unbox a => Int -> Int -> a -> Vector a
+ Data.Text32: generateM :: (Monad m, Unbox a) => Int -> Int -> m a -> m Vector a
+ Data.Text32: head :: Unbox a => Vector a -> a
+ Data.Text32: headM :: (Unbox a, Monad m) => Vector a -> m a
+ Data.Text32: ifilter :: Unbox a => Int -> a -> Bool -> Vector a -> Vector a
+ Data.Text32: ifoldM :: (Monad m, Unbox b) => a -> Int -> b -> m a -> a -> Vector b -> m a
+ Data.Text32: ifoldM' :: (Monad m, Unbox b) => a -> Int -> b -> m a -> a -> Vector b -> m a
+ Data.Text32: ifoldM'_ :: (Monad m, Unbox b) => a -> Int -> b -> m a -> a -> Vector b -> m ()
+ Data.Text32: ifoldM_ :: (Monad m, Unbox b) => a -> Int -> b -> m a -> a -> Vector b -> m ()
+ Data.Text32: ifoldl :: Unbox b => a -> Int -> b -> a -> a -> Vector b -> a
+ Data.Text32: ifoldl' :: Unbox b => a -> Int -> b -> a -> a -> Vector b -> a
+ Data.Text32: ifoldr :: Unbox a => Int -> a -> b -> b -> b -> Vector a -> b
+ Data.Text32: ifoldr' :: Unbox a => Int -> a -> b -> b -> b -> Vector a -> b
+ Data.Text32: imap :: (Unbox a, Unbox b) => Int -> a -> b -> Vector a -> Vector b
+ Data.Text32: imapM :: (Monad m, Unbox a, Unbox b) => Int -> a -> m b -> Vector a -> m Vector b
+ Data.Text32: imapM_ :: (Monad m, Unbox a) => Int -> a -> m b -> Vector a -> m ()
+ Data.Text32: imapMaybe :: (Unbox a, Unbox b) => Int -> a -> Maybe b -> Vector a -> Vector b
+ Data.Text32: index :: Vector v a => v a -> Int -> Maybe a
+ Data.Text32: indexM :: (Unbox a, Monad m) => Vector a -> Int -> m a
+ Data.Text32: indexed :: Unbox a => Vector a -> Vector (Int, a)
+ Data.Text32: infix 4 `elem`
+ Data.Text32: infixr 5 ++
+ Data.Text32: init :: Unbox a => Vector a -> Vector a
+ Data.Text32: iterateN :: Unbox a => Int -> a -> a -> a -> Vector a
+ Data.Text32: iterateNM :: (Monad m, Unbox a) => Int -> a -> m a -> a -> m Vector a
+ Data.Text32: izipWith :: (Unbox a, Unbox b, Unbox c) => Int -> a -> b -> c -> Vector a -> Vector b -> Vector c
+ Data.Text32: izipWith3 :: (Unbox a, Unbox b, Unbox c, Unbox d) => Int -> a -> b -> c -> d -> Vector a -> Vector b -> Vector c -> Vector d
+ Data.Text32: izipWith4 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Int -> a -> b -> c -> d -> e -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ Data.Text32: izipWith5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Int -> a -> b -> c -> d -> e -> f -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ Data.Text32: izipWith6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f, Unbox g) => Int -> a -> b -> c -> d -> e -> f -> g -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ Data.Text32: izipWithM :: (Monad m, Unbox a, Unbox b, Unbox c) => Int -> a -> b -> m c -> Vector a -> Vector b -> m Vector c
+ Data.Text32: izipWithM_ :: (Monad m, Unbox a, Unbox b) => Int -> a -> b -> m c -> Vector a -> Vector b -> m ()
+ Data.Text32: last :: Unbox a => Vector a -> a
+ Data.Text32: lastM :: (Unbox a, Monad m) => Vector a -> m a
+ Data.Text32: length :: Unbox a => Vector a -> Int
+ Data.Text32: map :: (Unbox a, Unbox b) => a -> b -> Vector a -> Vector b
+ Data.Text32: mapM :: (Monad m, Unbox a, Unbox b) => a -> m b -> Vector a -> m Vector b
+ Data.Text32: mapM_ :: (Monad m, Unbox a) => a -> m b -> Vector a -> m ()
+ Data.Text32: mapMaybe :: (Unbox a, Unbox b) => a -> Maybe b -> Vector a -> Vector b
+ Data.Text32: maxIndex :: (Unbox a, Ord a) => Vector a -> Int
+ Data.Text32: maxIndexBy :: Unbox a => a -> a -> Ordering -> Vector a -> Int
+ Data.Text32: maximum :: (Unbox a, Ord a) => Vector a -> a
+ Data.Text32: maximumBy :: Unbox a => a -> a -> Ordering -> Vector a -> a
+ Data.Text32: minIndex :: (Unbox a, Ord a) => Vector a -> Int
+ Data.Text32: minIndexBy :: Unbox a => a -> a -> Ordering -> Vector a -> Int
+ Data.Text32: minimum :: (Unbox a, Ord a) => Vector a -> a
+ Data.Text32: minimumBy :: Unbox a => a -> a -> Ordering -> Vector a -> a
+ Data.Text32: modify :: Unbox a => forall s. () => MVector s a -> ST s () -> Vector a -> Vector a
+ Data.Text32: notElem :: (Unbox a, Eq a) => a -> Vector a -> Bool
+ Data.Text32: null :: Unbox a => Vector a -> Bool
+ Data.Text32: or :: Vector Bool -> Bool
+ Data.Text32: partition :: Unbox a => a -> Bool -> Vector a -> (Vector a, Vector a)
+ Data.Text32: postscanl :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: postscanl' :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: postscanr :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: postscanr' :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: prescanl :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: prescanl' :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: prescanr :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: prescanr' :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: product :: (Unbox a, Num a) => Vector a -> a
+ Data.Text32: replace :: (Vector v a, Eq a) => a -> v a -> v a -> v a
+ Data.Text32: replicate :: Unbox a => Int -> a -> Vector a
+ Data.Text32: replicateM :: (Monad m, Unbox a) => Int -> m a -> m Vector a
+ Data.Text32: reverse :: Unbox a => Vector a -> Vector a
+ Data.Text32: scanl :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: scanl' :: (Unbox a, Unbox b) => a -> b -> a -> a -> Vector b -> Vector a
+ Data.Text32: scanl1 :: Unbox a => a -> a -> a -> Vector a -> Vector a
+ Data.Text32: scanl1' :: Unbox a => a -> a -> a -> Vector a -> Vector a
+ Data.Text32: scanr :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: scanr' :: (Unbox a, Unbox b) => a -> b -> b -> b -> Vector a -> Vector b
+ Data.Text32: scanr1 :: Unbox a => a -> a -> a -> Vector a -> Vector a
+ Data.Text32: scanr1' :: Unbox a => a -> a -> a -> Vector a -> Vector a
+ Data.Text32: singleton :: Unbox a => a -> Vector a
+ Data.Text32: slice :: Unbox a => Int -> Int -> Vector a -> Vector a
+ Data.Text32: snoc :: Unbox a => Vector a -> a -> Vector a
+ Data.Text32: span :: Unbox a => a -> Bool -> Vector a -> (Vector a, Vector a)
+ Data.Text32: splitAt :: Unbox a => Int -> Vector a -> (Vector a, Vector a)
+ Data.Text32: sum :: (Unbox a, Num a) => Vector a -> a
+ Data.Text32: tail :: Unbox a => Vector a -> Vector a
+ Data.Text32: take :: Unbox a => Int -> Vector a -> Vector a
+ Data.Text32: takeWhile :: Unbox a => a -> Bool -> Vector a -> Vector a
+ Data.Text32: thaw :: (Unbox a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ Data.Text32: toList :: Unbox a => Vector a -> [a]
+ Data.Text32: unfoldr :: Unbox a => b -> Maybe (a, b) -> b -> Vector a
+ Data.Text32: unfoldrM :: (Monad m, Unbox a) => b -> m Maybe (a, b) -> b -> m Vector a
+ Data.Text32: unfoldrN :: Unbox a => Int -> b -> Maybe (a, b) -> b -> Vector a
+ Data.Text32: unfoldrNM :: (Monad m, Unbox a) => Int -> b -> m Maybe (a, b) -> b -> m Vector a
+ Data.Text32: uniq :: (Unbox a, Eq a) => Vector a -> Vector a
+ Data.Text32: unsafeAccum :: Unbox a => a -> b -> a -> Vector a -> [(Int, b)] -> Vector a
+ Data.Text32: unsafeAccumulate :: (Unbox a, Unbox b) => a -> b -> a -> Vector a -> Vector (Int, b) -> Vector a
+ Data.Text32: unsafeAccumulate_ :: (Unbox a, Unbox b) => a -> b -> a -> Vector a -> Vector Int -> Vector b -> Vector a
+ Data.Text32: unsafeBackpermute :: Unbox a => Vector a -> Vector Int -> Vector a
+ Data.Text32: unsafeCopy :: (Unbox a, PrimMonad m) => MVector PrimState m a -> Vector a -> m ()
+ Data.Text32: unsafeDrop :: Unbox a => Int -> Vector a -> Vector a
+ Data.Text32: unsafeFreeze :: (Unbox a, PrimMonad m) => MVector PrimState m a -> m Vector a
+ Data.Text32: unsafeHead :: Unbox a => Vector a -> a
+ Data.Text32: unsafeHeadM :: (Unbox a, Monad m) => Vector a -> m a
+ Data.Text32: unsafeIndex :: Unbox a => Vector a -> Int -> a
+ Data.Text32: unsafeIndexM :: (Unbox a, Monad m) => Vector a -> Int -> m a
+ Data.Text32: unsafeInit :: Unbox a => Vector a -> Vector a
+ Data.Text32: unsafeLast :: Unbox a => Vector a -> a
+ Data.Text32: unsafeLastM :: (Unbox a, Monad m) => Vector a -> m a
+ Data.Text32: unsafeSlice :: Unbox a => Int -> Int -> Vector a -> Vector a
+ Data.Text32: unsafeTail :: Unbox a => Vector a -> Vector a
+ Data.Text32: unsafeTake :: Unbox a => Int -> Vector a -> Vector a
+ Data.Text32: unsafeThaw :: (Unbox a, PrimMonad m) => Vector a -> m MVector PrimState m a
+ Data.Text32: unsafeUpd :: Unbox a => Vector a -> [(Int, a)] -> Vector a
+ Data.Text32: unsafeUpdate :: Unbox a => Vector a -> Vector (Int, a) -> Vector a
+ Data.Text32: unsafeUpdate_ :: Unbox a => Vector a -> Vector Int -> Vector a -> Vector a
+ Data.Text32: unstablePartition :: Unbox a => a -> Bool -> Vector a -> (Vector a, Vector a)
+ Data.Text32: unzip :: (Unbox a, Unbox b) => Vector (a, b) -> (Vector a, Vector b)
+ Data.Text32: unzip3 :: (Unbox a, Unbox b, Unbox c) => Vector (a, b, c) -> (Vector a, Vector b, Vector c)
+ Data.Text32: unzip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => Vector (a, b, c, d) -> (Vector a, Vector b, Vector c, Vector d)
+ Data.Text32: unzip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Vector (a, b, c, d, e) -> (Vector a, Vector b, Vector c, Vector d, Vector e)
+ Data.Text32: unzip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Vector (a, b, c, d, e, f) -> (Vector a, Vector b, Vector c, Vector d, Vector e, Vector f)
+ Data.Text32: update :: Unbox a => Vector a -> Vector (Int, a) -> Vector a
+ Data.Text32: update_ :: Unbox a => Vector a -> Vector Int -> Vector a -> Vector a
+ Data.Text32: zip :: (Unbox a, Unbox b) => Vector a -> Vector b -> Vector (a, b)
+ Data.Text32: zip3 :: (Unbox a, Unbox b, Unbox c) => Vector a -> Vector b -> Vector c -> Vector (a, b, c)
+ Data.Text32: zip4 :: (Unbox a, Unbox b, Unbox c, Unbox d) => Vector a -> Vector b -> Vector c -> Vector d -> Vector (a, b, c, d)
+ Data.Text32: zip5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector (a, b, c, d, e)
+ Data.Text32: zip6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector (a, b, c, d, e, f)
+ Data.Text32: zipWith :: (Unbox a, Unbox b, Unbox c) => a -> b -> c -> Vector a -> Vector b -> Vector c
+ Data.Text32: zipWith3 :: (Unbox a, Unbox b, Unbox c, Unbox d) => a -> b -> c -> d -> Vector a -> Vector b -> Vector c -> Vector d
+ Data.Text32: zipWith4 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => a -> b -> c -> d -> e -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e
+ Data.Text32: zipWith5 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => a -> b -> c -> d -> e -> f -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f
+ Data.Text32: zipWith6 :: (Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f, Unbox g) => a -> b -> c -> d -> e -> f -> g -> Vector a -> Vector b -> Vector c -> Vector d -> Vector e -> Vector f -> Vector g
+ Data.Text32: zipWithM :: (Monad m, Unbox a, Unbox b, Unbox c) => a -> b -> m c -> Vector a -> Vector b -> m Vector c
+ Data.Text32: zipWithM_ :: (Monad m, Unbox a, Unbox b) => a -> b -> m c -> Vector a -> Vector b -> m ()
Files
- src/Data/Text32.hs +3/−2
- vector-text.cabal +3/−3
src/Data/Text32.hs view
@@ -1,8 +1,9 @@ module Data.Text32 (module Data.Text32, module X) where import Prelude-import Data.Container.Vector as X-import Data.Vector.Unboxed as X (Vector, all, toList)+import Data.Vector.Unboxed as X -- (Vector, all, toList)++import Data.Container.Vector as X (index, commonPrefixes, replace) type Text32 = Vector Char
vector-text.cabal view
@@ -1,11 +1,11 @@--- This file has been generated from package.yaml by hpack version 0.20.0.+-- This file has been generated from package.yaml by hpack version 0.28.2. -- -- see: https://github.com/sol/hpack ----- hash: 583a890e6714512969d337066228235a4fd7fdfddde6a52908661643a10777cf+-- hash: e36bd5d62b2a34c2719406bc4bab26230666ebe700e60d80d0742295d11fe277 name: vector-text-version: 1.1.3+version: 1.1.5 synopsis: Text implementation based on unboxed char vector. category: Data stability: experimental