diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/iterator.gleam | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index 0b747df..c09901c 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -965,3 +965,37 @@ pub fn last(iterator: Iterator(element)) -> Result(element, Nil) { iterator |> reduce(fn(elem, _) { elem }) } + +/// Creates an iterator that yields no elements. +/// +/// ## Examples +/// +/// > empty() |> to_list +/// [] +/// +pub fn empty() -> Iterator(element) { + Iterator(stop) +} + +/// Creates an iterator that yields exactly one element provided by calling the given function. +/// +/// ## Examples +/// +/// > once(fn() { 1 }) |> to_list +/// [1] +/// +pub fn once(f: fn() -> element) -> Iterator(element) { + fn() { Continue(f(), stop) } + |> Iterator +} + +/// Creates an iterator that yields the given element exactly once. +/// +/// ## Examples +/// +/// > single(1) |> to_list +/// [1] +/// +pub fn single(elem: element) -> Iterator(element) { + once(fn() { elem }) +} |