Module Choice.Make

Parameters

module M : Basic

Signature

include Basic with type 'a t := 'a M.t
val pure : 'a -> 'a M.t

pure x creates a computation that results in x.

val zero : unit -> 'a M.t

zero () creates a computation that has no result.

val accept : 'a -> 'a M.t

accept x accepts x as a result of computation. (Same as pure x.

val reject : unit -> 'a M.t

reject () rejects the rest of computation sequence, and terminate the computation with the zero result (Same as zero ()

val guard : bool -> unit M.t

guard cond ensures cond is true in the rest of computation. Otherwise the rest of the computation is rejected.

val on : bool -> unit M.t -> unit M.t

on cond x computes x only iff cond is true

val unless : bool -> unit M.t -> unit M.t

unless cond x computes x unless cond is true.