module Result: Result
type('a, 'e)
t =('a, 'e) result
=
| |
Ok of |
| |
Error of |
結果值的類型。可以是值 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 ~default
若 r
為 Ok v
則回傳 v
,否則回傳 default
。
val get_ok : ('a, 'e) result -> 'a
get_ok r
若 r
為 Ok v
則回傳 v
,否則拋出例外。
Invalid_argument
例外,若 r
為 Error _
。val get_error : ('a, 'e) result -> 'e
get_error r
若 r
為 Error e
則回傳 e
,否則拋出例外。
Invalid_argument
例外,若 r
為 Ok _
。val bind : ('a, 'e) result ->
('a -> ('b, 'e) result) -> ('b, 'e) result
bind r f
若 r
為 Ok v
則回傳 f v
,若 r
為 Error _
則回傳 r
。
val join : (('a, 'e) result, 'e) result -> ('a, 'e) result
join rr
若 rr
為 Ok r
則回傳 r
,若 rr
為 Error _
則回傳 rr
。
val map : ('a -> 'b) -> ('a, 'e) result -> ('b, 'e) result
map f r
若 r
為 Ok v
則回傳 Ok (f v)
,若 r
為 Error _
則回傳 r
。
val map_error : ('e -> 'f) -> ('a, 'e) result -> ('a, 'f) result
map_error f r
若 r
為 Error e
則回傳 Error (f e)
,若 r
為 Ok _
則回傳 r
。
val fold : ok:('a -> 'c) -> error:('e -> 'c) -> ('a, 'e) result -> 'c
fold ~ok ~error r
若 r
為 Ok v
則回傳 ok v
,若 r
為 Error e
則回傳 error e
。
val iter : ('a -> unit) -> ('a, 'e) result -> unit
iter f r
若 r
為 Ok v
則執行 f v
,否則回傳 ()
。
val iter_error : ('e -> unit) -> ('a, 'e) result -> unit
iter_error f r
若 r
為 Error e
則執行 f e
,否則回傳 ()
。
val is_ok : ('a, 'e) result -> bool
is_ok r
若且唯若 r
為 Ok _
則回傳 true
。
val is_error : ('a, 'e) result -> bool
is_error r
若且唯若 r
為 Error _
則回傳 true
。
val equal : ok:('a -> 'a -> bool) ->
error:('e -> 'e -> bool) ->
('a, 'e) result -> ('a, 'e) result -> bool
equal ~ok ~error r0 r1
使用 ok
和 error
分別比較 Ok _
和 Error _
包裹的值,測試 r0
和 r1
的相等性。
val compare : ok:('a -> 'a -> int) ->
error:('e -> 'e -> int) ->
('a, 'e) result -> ('a, 'e) result -> int
compare ~ok ~error r0 r1
使用 ok
和 error
分別比較 Ok _
和 Error _
包裹的值,完全排序 r0
和 r1
。 Ok _
的值小於 Error _
的值。
val to_option : ('a, 'e) result -> 'a option
to_option r
將 r
轉換為 option 類型,將 Ok v
對應到 Some v
,將 Error _
對應到 None
。
val to_list : ('a, 'e) result -> 'a list
to_list r
若 r
為 Ok v
則回傳 [v]
,否則回傳 []
。
val to_seq : ('a, 'e) result -> 'a Seq.t
to_seq r
將 r
轉換為 sequence。 Ok v
是包含 v
的單一元素序列,Error _
則是空序列。