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
转换为选项类型,将 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 _
是空序列。