Module Logic_monad.NonLogical
The non-logical monad is a simple unit -> 'a
(i/o) monad. The operations are simple wrappers around corresponding usual operations and require little documentation.
val (!) : 'a ref -> 'a t
val read_line : string t
val print_char : char -> unit t
val print_debug : Pp.t -> unit t
Loggers. The buffer is also flushed.
val print_warning : Pp.t -> unit t
val print_notice : Pp.t -> unit t
val print_info : Pp.t -> unit t
val raise : ?info:Exninfo.info -> exn -> 'a t
Pervasives.raise
. Except that exceptions are wrapped withException
.
val catch : 'a t -> (Exninfo.iexn -> 'a t) -> 'a t
try ... with ...
but restricted toException
.
val timeout : int -> 'a t -> 'a t
val make : (unit -> 'a) -> 'a t
Construct a monadified side-effect. Exceptions raised by the argument are wrapped with
Exception
.
val run : 'a t -> 'a
run
performs effects.