aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gleam/option.gleam20
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
+ }
+}