Parameter Make.M

type '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.