From 7b10d02d88af84560855337e45c755686a396943 Mon Sep 17 00:00:00 2001 From: Sebastian Porto Date: Sat, 8 May 2021 00:57:56 +1000 Subject: Add option.values (#203) --- src/gleam/option.gleam | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src') diff --git a/src/gleam/option.gleam b/src/gleam/option.gleam index f74abbd..8045a28 100644 --- a/src/gleam/option.gleam +++ b/src/gleam/option.gleam @@ -1,3 +1,5 @@ +import gleam/list + /// Option represents a value that may be present or not. Some means the value is /// present, None means the value is not. /// @@ -180,3 +182,17 @@ pub fn or(first: Option(a), second: Option(a)) -> Option(a) { None -> second } } + +/// Given a list of options +/// Return only the values inside Some +/// +/// ## Examples +/// +/// ``` +/// > values([Some(1), None, Some(3)]) +/// [1, 3] +/// ``` +/// +pub fn values(options: List(Option(a))) -> List(a) { + list.filter_map(options, fn(op) { to_result(op, "") }) +} -- cgit v1.2.3