elpi

ELPI - Embeddable λProlog Interpreter
Library elpi
Module Elpi . API . Utils
val error : ?loc:Ast.Loc.t -> string -> 'a

A regular error (fatal)

val anomaly : ?loc:Ast.Loc.t -> string -> 'a

An invariant is broken, i.e. a bug

val type_error : ?loc:Ast.Loc.t -> string -> 'a

A type error (in principle ruled out by elpi-checker.elpi)

val warn : ?loc:Ast.Loc.t -> string -> unit

A non fatal warning

val list_to_lp_list : Data.term list -> Data.term

link between OCaml and LP lists. Note that 1,2|X is not a valid * OCaml list!

val lp_list_to_list : depth:int -> Data.term -> Data.term list
val get_assignment : FlexibleData.Elpi.t -> Data.term option

The body of an assignment, if any (LOW LEVEL). * Use look and forget about this API since the term you get * needs to be moved and/or reduced, and you have no API for this.

val clause_of_term : ?name:string -> ?graft:([ `After | `Before ] * string) -> depth:int -> Ast.Loc.t -> Data.term -> Ast.program

Hackish, in particular the output should be a compiled program

val move : from:int -> to_:int -> Data.term -> Data.term

Lifting/restriction/beta (LOW LEVEL, don't use)

val beta : depth:int -> Data.term -> Data.term list -> Data.term
val map_acc : ( State.t -> 't -> State.t * 'a * Conversion.extra_goals ) -> State.t -> 't list -> State.t * 'a list * Conversion.extra_goals

readback/embed on lists

module type Show = sig ... end
module type Show1 = sig ... end
module Map : sig ... end
module Set : sig ... end