← Back to the index

Module std/result.vv

The result module handles operations that can succeed with a value (ok) or fail with an error (error).

Example:

import result from "std/result.vv"

let r = result.ok(42)
if result.is_ok(r)
    console.print(r.value)
end

Table of Contents

Exports

fun ok(value)

Returns a successful result containing value.

Example:

let r = result.ok(10)

fun error(value)

Returns a failure result containing an error value.

Example:

let e = result.error("something went wrong")

fun is_ok(v)

Checks if the result is successful (ok).

Example:

result.is_ok(result.ok(1))    // true
result.is_ok(result.error(1)) // false

fun is_error(v)

Checks if the result is a failure (error).

Example:

result.is_error(result.error(1)) // true
result.is_error(result.ok(1))    // false

fun map(v, f)

Applies f to the value of an ok result.

Example:

result.map(result.ok(2), fun(x) return x * 2 end) // ok(4)

fun flat_map(v, f)

Applies a function f that returns a result to the value of an ok result.

Example:

result.flat_map(result.ok(1), fun(x) return result.ok(x + 1) end) // ok(2)

fun map_error(v, f)

Applies f to the value of an error result.

Example:

result.map_error(result.error("fail"), fun(e) return e + "!" end) // error("fail!")

fun flat_map_error(v, f)

Applies a function f that returns a result to the value of an error result.

Example:

result.flat_map_error(result.error(1), fun(e) return result.error(e + 1) end) // error(2)

fun get_or(v, default_value)

Returns the ok value if it exists, otherwise returns default_value.

Example:

result.get_or(result.ok(1), 0)    // 1
result.get_or(result.error(1), 0) // 0

fun get_error_or(v, default_value)

Returns the error value if it exists, otherwise returns default_value.

Example:

result.get_error_or(result.error("fail"), "ok") // "fail"

fun to_option(v)

Converts a result into an option. ok(v) becomes some(v), error(v) becomes none.

Example:

result.to_option(result.ok(1))    // some(1)
result.to_option(result.error(1)) // none

fun from_option(v, error_value)

Converts an option into a result. some(v) becomes ok(v), none becomes error(error_value).

Example:

result.from_option(option.some(1), "fail") // ok(1)
result.from_option(option.none, "fail")    // error("fail")