forked from maplelang/compiler
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathresult.m
41 lines (35 loc) · 745 Bytes
/
result.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/*
* Copyright (c) 2022-2023, Mate Kukri
* SPDX-License-Identifier: GPL-2.0-only
*
* Description: Either monad
*/
import prog
enum Result<O, E> (
Ok(v: O),
Err(v: E)
)
function (result: *Result<O, E>) is_ok<O, E>() -> Bool {
match *result {
Ok(v) => true,
Err(v) => false
}
}
function (result: *Result<O, E>) is_err<O, E>() -> Bool {
match *result {
Ok(v) => false,
Err(v) => true
}
}
function (result: Result<O, E>) unwrap_ok<O, E>() -> O {
match result {
Ok(v) => v,
Err(v) => prog::panic(c"Value required instead of error\n")
}
}
function (result: Result<O, E>) unwrap_err<O, E>() -> E {
match result {
Ok(v) => prog::panic(c"Error required instead of value\n"),
Err(v) => v
}
}