Module Ltac2_plugin.Tac2quote

Syntactic quoting of expressions.

Contrarily to Tac2ffi, which lives on the semantic level, this module manipulates pure syntax of Ltac2. Its main purpose is to write notations.

val of_int : int CAst.t -> Tac2expr.raw_tacexpr
val of_pair : ( 'a -> Tac2expr.raw_tacexpr ) -> ( 'b -> Tac2expr.raw_tacexpr ) -> ('a * 'b) CAst.t -> Tac2expr.raw_tacexpr
val of_tuple : ?loc:Loc.t -> Tac2expr.raw_tacexpr list -> Tac2expr.raw_tacexpr
val of_constr : ?delimiters:Names.Id.t list -> Constrexpr.constr_expr -> Tac2expr.raw_tacexpr
val of_open_constr : ?delimiters:Names.Id.t list -> Constrexpr.constr_expr -> Tac2expr.raw_tacexpr
val of_preterm : ?delimiters:Names.Id.t list -> Constrexpr.constr_expr -> Tac2expr.raw_tacexpr
val of_list : ?loc:Loc.t -> ( 'a -> Tac2expr.raw_tacexpr ) -> 'a list -> Tac2expr.raw_tacexpr
val array_of_list : ?loc:Loc.t -> Tac2expr.raw_tacexpr -> Tac2expr.raw_tacexpr
val of_intro_patterns : Tac2qexpr.intro_pattern list CAst.t -> Tac2expr.raw_tacexpr

id ↦ 'Control.hyp @id'

val of_exact_hyp : ?loc:Loc.t -> Names.Id.t CAst.t -> Tac2expr.raw_tacexpr

id ↦ 'Control.refine (fun () => Control.hyp @id')

val of_exact_var : ?loc:Loc.t -> Names.Id.t CAst.t -> Tac2expr.raw_tacexpr

id ↦ 'Control.refine (fun () => Control.hyp @id')

Generic arguments
val wit_preterm : ( Constrexpr.constr_expr, Names.Id.Set.t * Glob_term.glob_constr ) Tac2dyn.Arg.tag

Ltac1 AST quotation, seen as a 'tactic'. Its type is unit in Ltac2.

Ltac1 AST quotation, seen as a value-returning expression, with type Ltac1.t.