module Result:sig
..end
結果值。
結果值以明確且宣告式的方式處理計算結果和錯誤,而無需訴諸例外。
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
作為一個序列。Ok v
是包含 v
的單元素序列,而 Error _
是空序列。