Module Imandra_prelude.Result

type ('a, 'b) t = ( 'a, 'b ) result
val return : 'a -> ( 'a, 'b ) result
val fail : 'a -> ( 'b, 'a ) result
val map : ( 'a -> 'b ) -> ( 'a, 'c ) result -> ( 'b, 'c ) result
val map_err : ( 'a -> 'b ) -> ( 'c, 'a ) result -> ( 'c, 'b ) result
val get_or : ( 'a, 'b ) result -> default:'a -> 'a
val map_or : ( 'a -> 'b ) -> ( 'a, 'c ) result -> default:'b -> 'b
val (>|=) : ( 'a, 'b ) result -> ( 'a -> 'c ) -> ( 'c, 'b ) result
val flat_map : ( 'a -> ( 'b, 'c ) result ) -> ( 'a, 'c ) result -> ( 'b, 'c ) result
val (>>=) : ( 'a, 'b ) result -> ( 'a -> ( 'c, 'b ) result ) -> ( 'c, 'b ) result
val fold : ok:( 'a -> 'b ) -> error:( 'c -> 'b ) -> ( 'a, 'c ) result -> 'b
val is_ok : ( 'a, 'b ) result -> bool
val is_error : ( 'a, 'b ) result -> bool
val monoid_product : ( 'a, 'b ) result -> ( 'c, 'b ) result -> ( 'a * 'c, 'b ) result
val let+ : ( 'a, 'b ) result -> ( 'a -> 'c ) -> ( 'c, 'b ) result
val and+ : ( 'a, 'b ) result -> ( 'c, 'b ) result -> ( 'a * 'c, 'b ) result
val let* : ( 'a, 'b ) result -> ( 'a -> ( 'c, 'b ) result ) -> ( 'c, 'b ) result
val and* : ( 'a, 'b ) result -> ( 'c, 'b ) result -> ( 'a * 'c, 'b ) result