From 32b56eb7cd04bdd47a548b021602a018bdf782c6 Mon Sep 17 00:00:00 2001 From: Sebastian Porto Date: Sat, 8 May 2021 06:28:31 +1000 Subject: Add list.flat_map (#202) --- src/gleam/list.gleam | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src') diff --git a/src/gleam/list.gleam b/src/gleam/list.gleam index ea67ba5..a0b3b16 100644 --- a/src/gleam/list.gleam +++ b/src/gleam/list.gleam @@ -452,6 +452,20 @@ pub fn flatten(lists: List(List(a))) -> List(a) { do_flatten(lists, []) } +/// Map and flatten the result +/// +/// ## Examples +/// +/// ``` +/// > flat_map([2, 4, 6], fn(x) { [x, x + 1] }) +/// [2, 3, 4, 5, 6, 7] +/// ``` +/// +pub fn flat_map(over list: List(a), with fun: fn(a) -> List(b)) -> List(b) { + map(list, fun) + |> flatten +} + /// Reduces a list of elements into a single value by calling a given function /// on each element, going from left to right. /// -- cgit v1.2.3