模組 Stdlib.Result

module Result: Result

結果 (Results)

type ('a, 'e) t = ('a, 'e) result = 
| Ok of 'a
| Error of 'e

結果值的類型。可以是值 Ok v 或錯誤 Error e

val ok : 'a -> ('a, 'e) result

ok v 等同於 Ok v

val error : 'e -> ('a, 'e) result

error e 等同於 Error e

val value : ('a, 'e) result -> default:'a -> 'a

value r ~defaultrOk v 則回傳 v,否則回傳 default

val get_ok : ('a, 'e) result -> 'a

get_ok rrOk v 則回傳 v,否則拋出例外。

val get_error : ('a, 'e) result -> 'e

get_error rrError e 則回傳 e,否則拋出例外。

val bind : ('a, 'e) result ->
('a -> ('b, 'e) result) -> ('b, 'e) result

bind r frOk v 則回傳 f v,若 rError _ 則回傳 r

val join : (('a, 'e) result, 'e) result -> ('a, 'e) result

join rrrrOk r 則回傳 r,若 rrError _ 則回傳 rr

val map : ('a -> 'b) -> ('a, 'e) result -> ('b, 'e) result

map f rrOk v 則回傳 Ok (f v),若 rError _ 則回傳 r

val map_error : ('e -> 'f) -> ('a, 'e) result -> ('a, 'f) result

map_error f rrError e 則回傳 Error (f e),若 rOk _ 則回傳 r

val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) result -> 'c

fold ~ok ~error rrOk v 則回傳 ok v,若 rError e 則回傳 error e

val iter : ('a -> unit) -> ('a, 'e) result -> unit

iter f rrOk v 則執行 f v,否則回傳 ()

val iter_error : ('e -> unit) -> ('a, 'e) result -> unit

iter_error f rrError e 則執行 f e,否則回傳 ()

述詞與比較 (Predicates and comparisons)

val is_ok : ('a, 'e) result -> bool

is_ok r 若且唯若 rOk _ 則回傳 true

val is_error : ('a, 'e) result -> bool

is_error r 若且唯若 rError _ 則回傳 true

val equal : ok:('a -> 'a -> bool) ->
error:('e -> 'e -> bool) ->
('a, 'e) result -> ('a, 'e) result -> bool

equal ~ok ~error r0 r1 使用 okerror 分別比較 Ok _Error _ 包裹的值,測試 r0r1 的相等性。

val compare : ok:('a -> 'a -> int) ->
error:('e -> 'e -> int) ->
('a, 'e) result -> ('a, 'e) result -> int

compare ~ok ~error r0 r1 使用 okerror 分別比較 Ok _Error _ 包裹的值,完全排序 r0r1Ok _ 的值小於 Error _ 的值。

轉換 (Converting)

val to_option : ('a, 'e) result -> 'a option

to_option rr 轉換為 option 類型,將 Ok v 對應到 Some v,將 Error _ 對應到 None

val to_list : ('a, 'e) result -> 'a list

to_list rrOk v 則回傳 [v],否則回傳 []

val to_seq : ('a, 'e) result -> 'a Seq.t

to_seq rr 轉換為 sequence。 Ok v 是包含 v 的單一元素序列,Error _ 則是空序列。