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-1.16.10.tbz
    
    
        
    
  
  
  
    
  
  
    
  
        sha256=c64313f5cd5e5f1697ce73be4268f03e0038dee4bed6a880c311b80031efe4ec
    
    
  sha512=908978042c6440bdf1615e8762de625ced8f812627ba10f566cdd3d031971e6195156e69eeafcbc6ab5e1d9338bf546ae4a67abd69b7fcd98d04857dd32b2696
    
    
  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 z
- let x[@trace] = .. in e--->- e
- type 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)"
  >