gleam/option
Types
Functions
pub fn all(list: List(Option(a))) -> Option(List(a))
Combines a list of Option
s 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 returnsNone
.
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 lazy_or(
first: Option(a),
second: fn() -> Option(a),
) -> Option(a)
Returns the first value if it is Some
, otherwise evaluates the given function for a fallback value.
Examples
lazy_or(Some(1), fn() { Some(2) })
// -> Some(1)
lazy_or(Some(1), fn() { None })
// -> Some(1)
lazy_or(None, fn() { Some(2) })
// -> Some(2)
lazy_or(None, fn() { None })
// -> None
pub fn lazy_unwrap(option: Option(a), or default: fn() -> a) -> a
Extracts the value from an Option
, evaluating the default function if the option is None
.
Examples
lazy_unwrap(Some(1), fn() { 0 })
// -> 1
lazy_unwrap(None, fn() { 0 })
// -> 0
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 returns 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 Option
.
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