diff options
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)) }) +} |