foldr -bytestring -text

foldr :: (a -> b -> b) -> b -> [a] -> b
base Prelude, base Data.List
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)...)
foldr :: Foldable t => (a -> b -> b) -> b -> t a -> b
base Data.Foldable
foldr :: (Key -> b -> b) -> b -> IntSet -> b
containers Data.IntSet
O(n). Fold the elements in the set using the given right-associative binary operator, such that foldr f z == foldr f z . toAscList. For example, > toAscList set = foldr (:) [] set
foldr :: (a -> b -> b) -> b -> IntMap a -> b
containers Data.IntMap.Strict, containers Data.IntMap.Lazy
O(n). Fold the values in the map using the given right-associative binary operator, such that foldr f z == foldr f z . elems. For example, > elems map = foldr (:) [] map > let f a len = len + (length a) > foldr f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
foldr :: (a -> b -> b) -> b -> Map k a -> b
containers Data.Map.Lazy, containers Data.Map.Strict
O(n). Fold the values in the map using the given right-associative binary operator, such that foldr f z == foldr f z . elems. For example, > elems map = foldr (:) [] map > let f a len = len + (length a) > foldr f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
foldr :: (a -> b -> b) -> b -> Set a -> b
containers Data.Set
O(n). Fold the elements in the set using the given right-associative binary operator, such that foldr f z == foldr f z . toAscList. For example, > toAscList set = foldr (:) [] set
foldr1 :: (a -> a -> a) -> [a] -> a
base Prelude, base Data.List
foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists.
foldr' :: Foldable t => (a -> b -> b) -> b -> t a -> b
base Data.Foldable
Fold over the elements of a structure, associating to the right, but strictly.
foldr1 :: Foldable t => (a -> a -> a) -> t a -> a
base Data.Foldable
foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b
base Data.Foldable
Monadic fold over the elements of a structure, associating to the right, i.e. from right to left.
foldr' :: (Key -> b -> b) -> b -> IntSet -> b
containers Data.IntSet
O(n). A strict version of foldr. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
foldr' :: (a -> b -> b) -> b -> IntMap a -> b
containers Data.IntMap.Strict, containers Data.IntMap.Lazy
O(n). A strict version of foldr. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
foldr' :: (a -> b -> b) -> b -> Map k a -> b
containers Data.Map.Lazy, containers Data.Map.Strict
O(n). A strict version of foldr. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
foldr' :: (a -> b -> b) -> b -> Set a -> b
containers Data.Set
O(n). A strict version of foldr. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
foldrWithIndex :: (Int -> a -> b -> b) -> b -> Seq a -> b
containers Data.Sequence
foldrWithIndex is a version of foldr that also provides access to the index of each element.
foldrWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> b
containers Data.IntMap.Strict, containers Data.IntMap.Lazy
O(n). Fold the keys and values in the map using the given right-associative binary operator, such that foldrWithKey f z == foldr (uncurry f) z . toAscList. For example, > keys map = foldrWithKey (\k x ks -> k:ks) [] map > let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")" > foldrWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b
containers Data.Map.Lazy, containers Data.Map.Strict
O(n). Fold the keys and values in the map using the given right-associative binary operator, such that foldrWithKey f z == foldr (uncurry f) z . toAscList. For example, > keys map = foldrWithKey (\k x ks -> k:ks) [] map > let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")" > foldrWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
foldrWithKey' :: (Key -> a -> b -> b) -> b -> IntMap a -> b
containers Data.IntMap.Strict, containers Data.IntMap.Lazy
O(n). A strict version of foldrWithKey. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b
containers Data.Map.Lazy, containers Data.Map.Strict
O(n). A strict version of foldrWithKey. Each application of the operator is evaluated before using the result in the next application. This function is strict in the starting value.
unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
base Data.List
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]

Show more results