package soteria

  1. Overview
  2. Docs
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Sym.Producer

type 'a symex := 'a t
type subst := Value.Expr.Subst.t
include Soteria.Soteria_std.Monad.S
include Soteria_std.Monad.Base
type 'a t
val return : 'a -> 'a t
val bind : ('a -> 'b t) -> 'a t -> 'b t
val map : ('a -> 'b) -> 'a t -> 'b t
include Soteria_std.Monad.Extension with type 'a t := 'a t
val fold : (module M : Soteria_std.Sigs.Foldable) -> 'elem M.t -> init:'a -> f:('a -> 'elem -> 'a t) -> 'a t
val fold_list : 'elem list -> init:'a -> f:('a -> 'elem -> 'a t) -> 'a t
val fold_iter : 'elem Iter.t -> init:'a -> f:('a -> 'elem -> 'a t) -> 'a t
val iter : (module M : Soteria_std.Sigs.Foldable) -> 'elem M.t -> f:('elem -> unit t) -> unit t
val iter_list : 'elem list -> f:('elem -> unit t) -> unit t
val iter_iter : 'elem Iter.t -> f:('elem -> unit t) -> unit t
val map_m : (module M : Soteria_std.Sigs.Foldable) -> 'elem M.t -> f:('elem -> 'a t) -> 'a list t
val map_list : 'elem list -> f:('elem -> 'a t) -> 'a list t
val map_iter : 'elem Iter.t -> f:('elem -> 'a t) -> 'a list t
val lift : 'a symex -> 'a t
val vanish : unit -> 'a t
val apply_subst : ((Value.Expr.t -> 'a Value.t) -> 'syn -> 'sem) -> 'syn -> 'sem t
val produce_pure : Value.Expr.t -> unit t
val run : subst:subst -> 'a t -> ('a * subst) symex
val run_identity : 'a t -> 'a symex
val from_raw_UNSAFE : (subst option -> ('a * subst option) symex) -> 'a t

This is unsafe and shouldn't be used in clients, it is only available to enable the implementation of the state monad transformer.

module Syntax : sig ... end

Syntax extension for monads (let* and let+).