From c23299f135d49d2b2579d83699312c1085f20d25 Mon Sep 17 00:00:00 2001 From: Marcin Puc Date: Tue, 13 Apr 2021 16:44:35 +0200 Subject: Add iterator.{empty, once, single} --- src/gleam/iterator.gleam | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'src') 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 }) +} -- cgit v1.2.3