include Base_syntax with type 'a t := 'a X.t
include Core_kernel.Monad.Infix with type 'a t := 'a X.t
val (>>=) : 'a X.t -> ( 'a -> 'b X.t ) -> 'b X.tval (>>|) : 'a X.t -> ( 'a -> 'b ) -> 'b X.tinclude Let_syntax with type 'a t := 'a X.t
val return : 'a -> 'a X.tval bind : 'a X.t -> f:( 'a -> 'b X.t ) -> 'b X.tval map : 'a X.t -> f:( 'a -> 'b ) -> 'b X.tval both : 'a X.t -> 'b X.t -> ('a * 'b) X.t