Module Proofview.NonLogical

The NonLogical module allows the execution of effects (including I/O) in tactics (non-logical side-effects are not discarded at failures).

include Monad.S
include Monad.Def
type +'a t
val return : 'a -> 'a t
val (>>=) : 'a t -> ('a -> 'b t) -> 'b t
val (>>) : unit t -> 'a t -> 'a t
val map : ('a -> 'b) -> 'a t -> 'b t
module List : Monad.ListS with type 'a t := 'a t
val ignore : 'a t -> unit t
type 'a ref
val ref : 'a -> 'a ref t

Pervasives.(:=)

val (:=) : 'a ref -> 'a -> unit t

Pervasives.(!)

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 : Exninfo.iexn -> 'a t

Pervasives.raise. Except that exceptions are wrapped with Logic_monad.Exception.

val catch : 'a t -> (Exninfo.iexn -> 'a t) -> 'a t

try ... with ... but restricted to Logic_monad.Exception.

val timeout : float -> 'a t -> 'a option t
val make : (unit -> 'a) -> 'a t

Construct a monadified side-effect. Exceptions raised by the argument are wrapped with Logic_monad.Exception.

val run : 'a t -> 'a

run performs effects.