aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gleam/iterator.gleam34
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 })
+}