Package index
elpi
Library trace_ppx
Trace_ppx
Module
Module Trace_ppx Source elpi.trace.ppx provides the following syntax extensions:
type t = { a : T; b : S [@trace] }
let rec f x (w[@trace]) =
[%trace "f" (fun fmt -> .. x ..) begin
match x with
| K1 -> ...
| K2 x -> [%tcall f x]
| K2(x,y) ->
let z = f x in
[%spy "z" ~rid ~gid ~cond (fun fmt z -> .. z ..) z];
[%spyl "z" ~rid ~gid ~cond (fun fmt z -> .. z ..) zs];
[%log "K2" ~rid "whatever" 37];
let x[@trace] = ... in e
let w = { a; b = b[@trace ] } in
match w with
| { a; b = b [@trace] } ->
z + f y (b[@trace])
end]
[%end_trace "stop" ~rid]
If --cookie "elpi_trace=\"true\"" is not passed to the ppx rewriter:
[%end_trace "stop" ~rid] ---> ()[%trace "foo" pp code] ---> code[%tcall f x] ---> f x[%spy ...] [%spyl ...] and [%log ...] ---> ()f x (y[@trace]) z ---> f x zlet x[@trace] = .. in e ---> etype x = { a : T; b : T [@trace] } ---> type x = { a : T }{ a; b = b [@trace] } ---> { a } (in both patterns and expressions)T -> (S[@trace]) -> U ---> T -> UIn records, the shorcut "x" to mean "x = x" does not work, you have to use the longer form.
Source val err : loc :Ppxlib .Location.t -> string -> 'a Source val trace :
rid :Ppxlib_ast .Ast.expression ->
loc :Ppxlib .location ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expressionSource val spy :
loc :Ppxlib .location ->
(loc :Ppxlib .location -> unit -> Ppxlib_ast .Ast.expression) ->
?cond :Ppxlib_ast .Ast.expression ->
rid :Ppxlib_ast .Ast.expression ->
?gid :Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression list ->
Ppxlib_ast .Ast.expressionSource val spyl :
loc :Ppxlib .location ->
(loc :Ppxlib .location -> unit -> Ppxlib_ast .Ast.expression) ->
?cond :Ppxlib_ast .Ast.expression ->
rid :Ppxlib_ast .Ast.expression ->
?gid :Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression list ->
Ppxlib_ast .Ast.expressionSource val log :
loc :Ppxlib .location ->
Ppxlib_ast .Ast.expression ->
rid :Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expressionSource val cur_pred :
loc :Ppxlib .location ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expressionSource val end_trace :
loc :Ppxlib .location ->
rid :Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expressionSource val tcall :
loc :Ppxlib .location ->
Ppxlib__ .Import.expression ->
Ppxlib__ .Import.expression list ->
Ppxlib_ast .Ast.expressionSource val enabled : bool Stdlib .ref Source val has_iftrace_attribute : Ppxlib .attributes -> boolSource val has_iftrace : Ppxlib .core_type -> boolSource val map_trace : Ppxlib .Ast_traverse.mapSource val is_string_literal : Ppxlib .expression -> boolSource val is_gid : Ppxlib .arg_label -> boolSource val is_rid : Ppxlib .arg_label -> boolSource val is_cond : Ppxlib .arg_label -> boolSource val pull : ('a -> bool) -> ('a * 'b ) list -> 'b option * ('a * 'b ) listSource val err_spy : loc :Ppxlib .Location.t -> unit -> 'a Source val spyl_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val spyl_extension : Ppxlib .Extension.tSource val spyl_rule : Ppxlib .Context_free.Rule.tSource val spy_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val spy_extension : Ppxlib .Extension.tSource val spy_rule : Ppxlib .Context_free.Rule.tSource val tcall_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val tcall_extension : Ppxlib .Extension.tSource val tcall_rule : Ppxlib .Context_free.Rule.tSource val trace_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val trace_extension : Ppxlib .Extension.tSource val trace_rule : Ppxlib .Context_free.Rule.tSource val cur_pred_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib_ast .Ast.expression ->
Ppxlib_ast .Ast.expressionSource val cur_pred_extension : Ppxlib .Extension.tSource val cur_pred_rule : Ppxlib .Context_free.Rule.tSource val log_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val log_extension : Ppxlib .Extension.tSource val log_rule : Ppxlib .Context_free.Rule.tSource val end_trace_expand_function :
loc :Ppxlib .location ->
path :'a ->
Ppxlib .expression ->
Ppxlib_ast .Ast.expressionSource val end_trace_extension : Ppxlib .Extension.tSource val end_trace_rule : Ppxlib .Context_free.Rule.tSource val arg_trace : Ppxlib .Driver.Cookies.t -> unit