diff options
author | Marcin Puc <marcin.e.puc@gmail.com> | 2021-03-08 17:07:03 +0100 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2021-03-08 22:48:07 +0000 |
commit | d86237c4c07426d5f5df8fefd8f3e046b35ef4a4 (patch) | |
tree | 5b6b1ba418cfab3cde6db289b4e000a04d1696ee /src | |
parent | d19e8b4bcfd77e384e1b2e57bc342e81c1275287 (diff) | |
download | gleam_stdlib-d86237c4c07426d5f5df8fefd8f3e046b35ef4a4.tar.gz gleam_stdlib-d86237c4c07426d5f5df8fefd8f3e046b35ef4a4.zip |
Add iterator.iterate
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/iterator.gleam | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index 9bbf9d0..f441859 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -494,3 +494,17 @@ pub fn find( Stop -> Error(Nil) } } + +/// Creates an iterator that inifinitely applies a function to a value. +/// +/// ## Examples +/// +/// > iterate(1, fn(n) { n * 3 }) |> take(5) +/// [1, 3, 9, 27, 81] +/// +pub fn iterate( + from initial: element, + with f: fn(element) -> element, +) -> Iterator(element) { + unfold(initial, fn(element) { Next(element, f(element)) }) +} |