**foldr** -bytestring -containers

foldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left:
> foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
*O(n)* foldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a Text, reduces the Text using the binary operator, from right to left. Subject to fusion.
foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists.
Fold over the elements of a structure, associating to the right, but strictly.

Monadic fold over the elements of a structure, associating to the right, i.e. from right to left.

*O(n)* A variant of foldr that has no starting value argument, and thus must be applied to a non-empty Text. Subject to fusion.
Consume the chunks of a lazy Text with a natural right fold.
The unfoldr function is a `dual' to foldr: while foldr reduces a list to a summary value, unfoldr builds a list from a seed value. The function takes the element and returns Nothing if it is done producing the list or returns Just (a,b), in which case, a is a prepended to the list and b is used as the next element in a recursive call. For example,
> iterate f == unfoldr (\x -> Just (x, f x))
In some cases, unfoldr can undo a foldr operation:
> unfoldr f' (foldr f z xs) == xs
if the following holds:
> f' (f x y) = Just (x,y)
> f' z = Nothing
A simple use of unfoldr:
> unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10
> [10,9,8,7,6,5,4,3,2,1]
*O(n)*, unfoldr function is analogous to the List unfoldr. unfoldr builds a Text from a seed value. The function takes the element and returns Nothing if it is done producing the Text, otherwise Just (a,b). In this case, a is the next Char in the string, and b is the seed value for further production. Performs replacement on invalid scalar values.
*O(n)*, unfoldr function is analogous to the List unfoldr. unfoldr builds a Text from a seed value. The function takes the element and returns Nothing if it is done producing the Text, otherwise Just (a,b). In this case, a is the next Char in the string, and b is the seed value for further production. Subject to fusion. Performs replacement on invalid scalar values.
*O(n)* Like unfoldr, unfoldrN builds a Text from a seed value. However, the length of the result should be limited by the first argument to unfoldrN. This function is more efficient than unfoldr when the maximum length of the result is known and correct, otherwise its performance is similar to unfoldr. Subject to fusion. Performs replacement on invalid scalar values.
*O(n)* Like unfoldr, unfoldrN builds a Text from a seed value. However, the length of the result should be limited by the first argument to unfoldrN. This function is more efficient than unfoldr when the maximum length of the result is known and correct, otherwise its performance is similar to unfoldr. Performs replacement on invalid scalar values.