@@ -206,7 +206,7 @@ function build_model_info(input_expr)
206
206
:vi => gensym (:vi ),
207
207
:sampler => gensym (:sampler ),
208
208
:model => gensym (:model ),
209
- :inner_function => gensym (:inner_function ),
209
+ :model_function => gensym (modeldef[ :name ] ),
210
210
:defaults => gensym (:defaults )
211
211
)
212
212
)
@@ -319,6 +319,9 @@ function replace_tilde!(model_info)
319
319
end
320
320
""" |> Meta. parse |> eval
321
321
322
+ # """ Unbreak code highlighting in Emacs julia-mode
323
+
324
+
322
325
"""
323
326
generate_tilde(left, right, model_info)
324
327
@@ -437,7 +440,7 @@ function build_output(model_info)
437
440
vi = main_body_names[:vi ]
438
441
model = main_body_names[:model ]
439
442
sampler = main_body_names[:sampler ]
440
- inner_function = main_body_names[:inner_function ]
443
+ model_function = main_body_names[:model_function ]
441
444
442
445
# Arguments with default values
443
446
args = model_info[:args ]
@@ -481,28 +484,32 @@ function build_output(model_info)
481
484
end
482
485
483
486
ex = quote
487
+ function (:: DynamicPPL.ModelFunction{$(QuoteNode(model_function))} )(
488
+ $ vi:: DynamicPPL.VarInfo ,
489
+ $ sampler:: DynamicPPL.AbstractSampler ,
490
+ $ ctx:: DynamicPPL.AbstractContext ,
491
+ $ model
492
+ )
493
+ $ unwrap_data_expr
494
+ DynamicPPL. resetlogp! ($ vi)
495
+ $ main_body
496
+ end
497
+
498
+ $ model_function = DynamicPPL. ModelFunction {$(QuoteNode(model_function))} ()
499
+
484
500
function $outer_function ($ (args... ))
485
- function $inner_function (
486
- $ vi:: DynamicPPL.VarInfo ,
487
- $ sampler:: DynamicPPL.AbstractSampler ,
488
- $ ctx:: DynamicPPL.AbstractContext ,
489
- $ model
490
- )
491
- $ unwrap_data_expr
492
- DynamicPPL. resetlogp! ($ vi)
493
- $ main_body
494
- end
495
- return DynamicPPL. Model ($ inner_function, $ args_nt, $ model_gen_constructor)
501
+ return DynamicPPL. Model ($ model_function, $ args_nt, $ model_gen_constructor)
496
502
end
503
+
497
504
$ model_gen = $ model_gen_constructor
498
505
end
499
506
500
507
if ! isempty (args)
501
- ex = quote
502
- $ ex
503
- # Allows passing arguments as kwargs
508
+ # Allows passing arguments as kwargs
509
+ kwform = quote
504
510
$ outer_function (;$ (args... )) = $ outer_function ($ (arg_syms... ))
505
511
end
512
+ push! (ex. args, kwform)
506
513
end
507
514
508
515
return esc (ex)
0 commit comments