diff options
author | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-03-03 17:43:42 +0100 |
---|---|---|
committer | Tomasz Chojnacki <tomaszchojnacki2001@gmail.com> | 2023-03-03 17:43:42 +0100 |
commit | 8367d45862c59889e1b9824bab2e11645c09521f (patch) | |
tree | 4f86f635148e06faa4e91daae647ef7f432b7aa3 /aoc-2020-gleam/src/ext/iteratorx.gleam | |
parent | 6c661db5b3e167d45554f7c5e4838dbc3bffa63a (diff) | |
download | gleam_aoc2020-8367d45862c59889e1b9824bab2e11645c09521f.tar.gz gleam_aoc2020-8367d45862c59889e1b9824bab2e11645c09521f.zip |
Finish day 9
Diffstat (limited to 'aoc-2020-gleam/src/ext/iteratorx.gleam')
-rw-r--r-- | aoc-2020-gleam/src/ext/iteratorx.gleam | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/aoc-2020-gleam/src/ext/iteratorx.gleam b/aoc-2020-gleam/src/ext/iteratorx.gleam index 0ef5d51..65e06f2 100644 --- a/aoc-2020-gleam/src/ext/iteratorx.gleam +++ b/aoc-2020-gleam/src/ext/iteratorx.gleam @@ -10,3 +10,16 @@ pub fn count(iterator: Iterator(a), satisfying predicate: fn(a) -> Bool) -> Int |> iter.filter(for: predicate) |> length } + +pub fn filter_map( + iterator: Iterator(a), + with mapper: fn(a) -> Result(b, c), +) -> Iterator(b) { + iterator + |> iter.flat_map(with: fn(elem) { + case mapper(elem) { + Ok(new) -> iter.single(new) + Error(_) -> iter.empty() + } + }) +} |