From a13164e370b17699797f616b9c8fd54a135ad490 Mon Sep 17 00:00:00 2001 From: Ahmad Sattar Date: Wed, 17 Jun 2020 22:21:07 +0200 Subject: Option flatten function --- src/gleam/option.gleam | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src') diff --git a/src/gleam/option.gleam b/src/gleam/option.gleam index 46327ed..9a2e479 100644 --- a/src/gleam/option.gleam +++ b/src/gleam/option.gleam @@ -106,3 +106,23 @@ pub fn map(over option: Option(a), with fun: fn(a) -> b) -> Option(b) { None -> None } } + +/// Merge a nested Option into a single layer. +/// +/// ## Examples +/// +/// > flatten(Some(Some(1))) +/// Some(1) +/// +/// > flatten(Some(None)) +/// None +/// +/// > flatten(None) +/// None +/// +pub fn flatten(option: Option(Option(a))) -> Option(a) { + case option { + Some(x) -> x + None -> None + } +} -- cgit v1.2.3