Module

pooka/option

src/pooka/option.pooka

Sometimes the envelope is simply empty.

Transform Some values while leaving None alone. Fallback callbacks are lazy, and flat_map avoids nesting another Option around a result that is already optional.

Pooka
import pooka/option

assert option.map(Some(2), fn(x) { x + 1 }) == Some(3)

API reference

function

map

src/pooka/option.pooka:25
map(value: Option(a), transform: fn(a) -> b) -> Option(b)
INFERREDfn(Option(a), fn(a) -> b) -> Option(b)

Transform the carried value; an absent or failed branch passes through unchanged.

Pooka
import pooka/option

assert option.map(Some(2), fn(x) { x + 1 }) == Some(3)
function

flat_map

src/pooka/option.pooka:39
flat_map(value: Option(a), transform: fn(a) -> Option(b)) -> Option(b)
INFERREDfn(Option(a), fn(a) -> Option(b)) -> Option(b)

Chain a callback that already returns the same fallible wrapper.

Pooka
import pooka/option

assert option.flat_map(Some(2), fn(x) { Some(x + 1) }) == Some(3)
function

unwrap_or

src/pooka/option.pooka:53
unwrap_or(value: Option(a), default: a) -> a
INFERREDfn(Option(a), a) -> a

Return the carried value, or the already evaluated fallback.

Pooka
import pooka/option

assert option.unwrap_or(None, 7) == 7
function

unwrap_or_else

src/pooka/option.pooka:67
unwrap_or_else(value: Option(a), fallback: fn() -> a) -> a
INFERREDfn(Option(a), fn() -> a) -> a

Call the fallback only for None. A Some value leaves it asleep.

Pooka
import pooka/option

assert option.unwrap_or_else(None, fn() { 7 }) == 7
function

is_some

src/pooka/option.pooka:81
is_some(value: Option(a)) -> Bool
INFERREDfn(Option(a)) -> Bool

Ask whether an optional value is present.

Pooka
import pooka/option

assert option.is_some(Some(1))
function

is_none

src/pooka/option.pooka:95
is_none(value: Option(a)) -> Bool
INFERREDfn(Option(a)) -> Bool

Ask whether an optional value is absent.

Pooka
import pooka/option

assert option.is_none(None)
function

to_result

src/pooka/option.pooka:106
to_result(value: Option(a), error: e) -> Result(a, e)
INFERREDfn(Option(a), b) -> Result(a, b)

Replace absence with the supplied error value.

Pooka
import pooka/option

assert option.to_result(Some(1), "missing") == Ok(1)