package elpi

  1. Overview
  2. Docs

State is a collection of purely functional piece of data carried by the interpreter. Such data is kept in sync with the backtracking, i.e. changes made in a branch are lost if that branch fails. It can be used to both store custom constraints to be manipulated by custom solvers, or any other piece of data the host application may need to use.

type 'a component

'a MUST be purely functional, i.e. backtracking is implemented by using * an old binding for 'a. * This limitation can be lifted if there is user request.

val declare : name:string -> pp:(Format.formatter -> 'a -> unit) -> init:(unit -> 'a) -> 'a component

The compilation_is_over callback is called when the compilation phase is over, after that the state is threaded at run time

type t = Data.state
val get : 'a component -> t -> 'a
val set : 'a component -> t -> 'a -> t
val update : 'a component -> t -> ('a -> 'a) -> t

Allowed to raise BuiltInPredicate.No_clause

val update_return : 'a component -> t -> ('a -> 'a * 'b) -> t * 'b
OCaml

Innovation. Community. Security.