diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/option.gleam | 20 |
1 files changed, 20 insertions, 0 deletions
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 + } +} |