From 649c7f2fc4e71f4516bb7f5f6520d1961fb95cad Mon Sep 17 00:00:00 2001 From: Louis Pilfold Date: Thu, 12 Dec 2019 12:40:56 +0000 Subject: drop --- src/gleam/iterator.gleam | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src') diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index 690d66e..6f42f9c 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -121,6 +121,24 @@ pub fn take(from iterator: Iterator(e), up_to desired: Int) -> List(e) { |> list.reverse } +fn do_drop(iterator, desired) { + case desired > 0 { + True -> case iterator() { + Continue(_, iterator) -> do_drop(iterator, desired - 1) + Stop -> fn() { Stop } + } + False -> iterator + } +} + +// TODO: document +pub fn drop(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { + iterator + |> unopaque + |> do_drop(_, desired) + |> opaque +} + // Transforming Iterators fn do_map(iterator, f) { -- cgit v1.2.3