From d86237c4c07426d5f5df8fefd8f3e046b35ef4a4 Mon Sep 17 00:00:00 2001 From: Marcin Puc Date: Mon, 8 Mar 2021 17:07:03 +0100 Subject: Add iterator.iterate --- src/gleam/iterator.gleam | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') 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)) }) +} -- cgit v1.2.3