scanl f z <x1,...,xn> = <y1,...,y(n+1)> where y1 = z yi = f y(i-1) x(i-1)
>>> import qualified Data.Vector as V >>> V.scanl (+) 0 (V.fromList [1,2,3,4]) [0,1,3,6,10]
scanl f z <x1,...,xn> = <y1,...,y(n+1)> where y1 = z yi = f y(i-1) x(i-1)
>>> import qualified Data.Vector.Strict as V >>> V.scanl (+) 0 (V.fromList [1,2,3,4]) [0,1,3,6,10]
scanl f z <x1,...,xn> = <y1,...,y(n+1)> where y1 = z yi = f y(i-1) x(i-1)
>>> import qualified Data.Vector.Primitive as VP >>> VP.scanl (+) 0 (VP.fromList [1,2,3,4 :: Int]) [0,1,3,6,10]
scanl f z <x1,...,xn> = <y1,...,y(n+1)> where y1 = z yi = f y(i-1) x(i-1)
>>> import qualified Data.Vector.Storable as VS >>> VS.scanl (+) 0 (VS.fromList [1,2,3,4 :: Int]) [0,1,3,6,10]
scanl f z <x1,...,xn> = <y1,...,y(n+1)> where y1 = z yi = f y(i-1) x(i-1)
>>> import qualified Data.Vector.Unboxed as VU >>> VU.scanl (+) 0 (VU.fromList [1,2,3,4 :: Int]) [0,1,3,6,10]
scanl f <x1,...,xn> = <y1,...,yn> where y1 = x1 yi = f y(i-1) xiNote: Since 0.13, application of this to an empty vector no longer results in an error; instead it produces an empty vector.
>>> import qualified Data.Vector as V >>> V.scanl1 min $ V.fromListN 5 [4,2,4,1,3] [4,2,2,1,1] >>> V.scanl1 max $ V.fromListN 5 [1,3,2,5,4] [1,3,3,5,5] >>> V.scanl1 min (V.empty :: V.Vector Int) []
>>> import qualified Data.Vector as V >>> V.scanl1' min $ V.fromListN 5 [4,2,4,1,3] [4,2,2,1,1] >>> V.scanl1' max $ V.fromListN 5 [1,3,2,5,4] [1,3,3,5,5] >>> V.scanl1' min (V.empty :: V.Vector Int) []