scanl package:text

O(n) scanl is similar to foldl, but returns a list of successive reduced values from the left. Performs replacement on invalid scalar values.
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Properties
head (scanl f z xs) = z
last (scanl f z xs) = foldl f z xs
O(n) scanl is similar to foldl, but returns a stream of successive reduced values from the left. Conceptually, if we write the input stream as a list then we have:
scanl f z [x1, x2, ...] == [z, z 'f' x1, (z 'f' x1) 'f' x2, ...]
Properties
head (scanl f z xs) = z
last (scanl f z xs) = foldl f z xs
O(n) scanl is similar to foldl, but returns a list of successive reduced values from the left. Performs replacement on invalid scalar values.
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
O(n) scanl1 is a variant of scanl that has no starting value argument. Performs replacement on invalid scalar values.
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]