package elpi
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
ELPI - Embeddable λProlog Interpreter
Install
dune-project
Dependency
Authors
Maintainers
Sources
elpi-3.0.1.tbz
sha256=af8074c67e94095b25556e1d1e2aaaf0d04c19f373e38919cb8f0a0d6786aae7
sha512=774612085cd3ff267bfd1aa35b7dd2629cde066f9d2393185e28f21d2c86a24c2e36ef1293dee1b2cba37636b6deb6dc6e688cebdb4e2aaff922e06de15dba0a
doc/trace_ppx/Trace_ppx/index.html
Module Trace_ppxSource
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 -> U
In records, the shorcut "x" to mean "x = x" does not work, you have to use the longer form.
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 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 spyl_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expressionSource
val spy_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expressionSource
val tcall_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expressionSource
val trace_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expressionSource
val cur_pred_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib_ast.Ast.expression ->
Ppxlib_ast.Ast.expressionSource
val log_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expressionSource
val end_trace_expand_function :
loc:Ppxlib.location ->
path:'a ->
Ppxlib.expression ->
Ppxlib_ast.Ast.expression sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>