Module type Choice.S

The unary choice monad interface

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

pure x creates a computation that results in x.

val zero : unit -> 'a t

zero () creates a computation that has no result.

val accept : 'a -> 'a t

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

val reject : unit -> 'a t

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

val guard : bool -> unit t

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

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

on cond x computes x only iff cond is true

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

unless cond x computes x unless cond is true.