Choice.Make2val accept : 'a -> ('a, 'e) M.taccept x accepts x as a result of computation. (Same as pure x.
val reject : unit -> ('a, 'e) M.treject () rejects the rest of computation sequence, and terminate the computation with the zero result (Same as zero ()
val guard : bool -> (unit, 'e) M.tguard cond ensures cond is true in the rest of computation. Otherwise the rest of the computation is rejected.