gleam/option
Types
Functions
pub fn all(list: List(Option(a))) -> Option(List(a))
Combines a list of options into a single option. If all elements in the list are Some then returns a Some holding the list of values. If any element is None then returns None.
Examples
> all([Some(1), Some(2)])
Some([1, 2])
> all([Some(1), None])
None
pub fn flatten(option: Option(Option(a))) -> Option(a)
Merges a nested Option into a single layer.
Examples
> flatten(Some(Some(1)))
Some(1)
> flatten(Some(None))
None
> flatten(None)
None
pub fn from_result(result: Result(a, b)) -> Option(a)
Converts a Result type to an Option type
Examples
> from_result(Ok(1))
Some(1)
> from_result(Error("some_error"))
None
pub fn is_none(option: Option(a)) -> Bool
Checks whether the option is a None value.
Examples
> is_none(Some(1))
False
> is_none(None)
True
pub fn is_some(option: Option(a)) -> Bool
Checks whether the option is a Some value.
Examples
> is_some(Some(1))
True
> is_some(None)
False
pub fn map(
over option: Option(a),
with fun: fn(a) -> b,
) -> Option(b)
Updates a value held within the Some of an Option by calling a given function on it.
If the option is a None rather than Some the function is not called and the option stays the same.
Examples
> map(over: Some(1), with: fn(x) { x + 1 })
Some(2)
> map(over: None, with: fn(x) { x + 1 })
None
pub fn or(first: Option(a), second: Option(a)) -> Option(a)
Returns the first value if it is Some, otherwise return the second value.
Examples
> or(Some(1), Some(2))
Some(1)
> or(Some(1), None)
Some(1)
> or(None, Some(2))
Some(2)
> or(None, None)
None
pub fn then(
option: Option(a),
apply fun: fn(a) -> Option(b),
) -> Option(b)
Updates a value held within the Some of an Option by calling a given function on it, where the given function also returns an Option. The two Options are then merged together into one Option.
If the Option is a None rather than Some the function is not called and the Option stays the same.
This function is the equivalent of calling map
followed by flatten
, and
it is useful for chaining together multiple functions that return Options.
Examples
> then(Some(1), fn(x) { Some(x + 1) })
Some(2)
> then(Some(1), fn(x) { Some(#("a", x)) })
Some(#("a", 1))
> then(Some(1), fn(_) { None })
None
> then(None, fn(x) { Some(x + 1) })
None
pub fn to_result(option: Option(a), e: b) -> Result(a, b)
Converts an Option type to a Result type
Examples
> to_result(Some(1), "some_error")
Ok(1)
> to_result(None, "some_error")
Error("some_error")
pub fn unwrap(option: Option(a), or default: a) -> a
Extracts the value from an option, returning a default value if there is none.
Examples
> unwrap(Some(1), 0)
1
> unwrap(None, 0)
0