@@ -57,62 +57,61 @@ definition file:
57
57
- Once defined, the model is created using `model = model_name(...)`. The
58
58
`model` on the left-hand side is mandatory.
59
59
"""
60
- function include_model (model_name:: AbstractString )
61
- module_contents = quote
62
- using DynamicPPL: @model , to_submodel
63
- using Distributions
64
- using LinearAlgebra: I
65
- using . Main: @register
66
- include (" models/" * $ (model_name) * " .jl" )
67
- @register model
68
- end
69
- module_name = Symbol (" ADTests_" , model_name)
70
- # Ideally, this would be a macro. However, defining a module in a macro is
71
- # either incredibly difficult or impossible. See
72
- # https://github.com/TuringLang/ADTests/issues/31
73
- eval (Expr (:module , true , module_name, module_contents))
60
+ macro include_model (model_name:: AbstractString )
61
+ # in principle esc() shouldn't be needed, but see
62
+ # https://github.com/JuliaLang/julia/issues/55677
63
+ Expr (:toplevel , esc (:(
64
+ module $ (gensym ())
65
+ using DynamicPPL: @model , to_submodel
66
+ using Distributions
67
+ using LinearAlgebra: I
68
+ using . Main: @register
69
+ include (" models/" * $ (model_name) * " .jl" )
70
+ @register model
71
+ end
72
+ )))
74
73
end
75
74
76
- include_model ( " assume_beta" )
77
- include_model ( " assume_dirichlet" )
78
- include_model ( " assume_lkjcholu" )
79
- include_model ( " assume_mvnormal" )
80
- include_model ( " assume_normal" )
81
- include_model ( " assume_submodel" )
82
- include_model ( " assume_wishart" )
83
- include_model ( " broadcast_macro" )
84
- include_model ( " control_flow" )
85
- include_model ( " demo_assume_dot_observe" )
86
- include_model ( " demo_assume_dot_observe_literal" )
87
- include_model ( " demo_assume_index_observe" )
88
- include_model ( " demo_assume_matrix_observe_matrix_index" )
89
- include_model ( " demo_assume_multivariate_observe" )
90
- include_model ( " demo_assume_multivariate_observe_literal" )
91
- include_model ( " demo_assume_observe_literal" )
92
- include_model ( " demo_assume_submodel_observe_index_literal" )
93
- include_model ( " demo_dot_assume_observe" )
94
- include_model ( " demo_dot_assume_observe_index" )
95
- include_model ( " demo_dot_assume_observe_index_literal" )
96
- include_model ( " demo_dot_assume_observe_matrix_index" )
97
- include_model ( " demo_dot_assume_observe_submodel" )
98
- include_model ( " dot_assume" )
99
- include_model ( " dot_observe" )
100
- include_model ( " dynamic_constraint" )
101
- include_model ( " multiple_constraints_same_var" )
102
- include_model ( " multithreaded" )
103
- include_model ( " n010" )
104
- include_model ( " n050" )
105
- include_model ( " n100" )
106
- include_model ( " n500" )
107
- include_model ( " observe_bernoulli" )
108
- include_model ( " observe_categorical" )
109
- include_model ( " observe_index" )
110
- include_model ( " observe_literal" )
111
- include_model ( " observe_multivariate" )
112
- include_model ( " observe_submodel" )
113
- include_model ( " pdb_eight_schools_centered" )
114
- include_model ( " pdb_eight_schools_noncentered" )
115
- include_model ( " von_mises" )
75
+ @ include_model " assume_beta"
76
+ @ include_model " assume_dirichlet"
77
+ @ include_model " assume_lkjcholu"
78
+ @ include_model " assume_mvnormal"
79
+ @ include_model " assume_normal"
80
+ @ include_model " assume_submodel"
81
+ @ include_model " assume_wishart"
82
+ @ include_model " broadcast_macro"
83
+ @ include_model " control_flow"
84
+ @ include_model " demo_assume_dot_observe"
85
+ @ include_model " demo_assume_dot_observe_literal"
86
+ @ include_model " demo_assume_index_observe"
87
+ @ include_model " demo_assume_matrix_observe_matrix_index"
88
+ @ include_model " demo_assume_multivariate_observe"
89
+ @ include_model " demo_assume_multivariate_observe_literal"
90
+ @ include_model " demo_assume_observe_literal"
91
+ @ include_model " demo_assume_submodel_observe_index_literal"
92
+ @ include_model " demo_dot_assume_observe"
93
+ @ include_model " demo_dot_assume_observe_index"
94
+ @ include_model " demo_dot_assume_observe_index_literal"
95
+ @ include_model " demo_dot_assume_observe_matrix_index"
96
+ @ include_model " demo_dot_assume_observe_submodel"
97
+ @ include_model " dot_assume"
98
+ @ include_model " dot_observe"
99
+ @ include_model " dynamic_constraint"
100
+ @ include_model " multiple_constraints_same_var"
101
+ @ include_model " multithreaded"
102
+ @ include_model " n010"
103
+ @ include_model " n050"
104
+ @ include_model " n100"
105
+ @ include_model " n500"
106
+ @ include_model " observe_bernoulli"
107
+ @ include_model " observe_categorical"
108
+ @ include_model " observe_index"
109
+ @ include_model " observe_literal"
110
+ @ include_model " observe_multivariate"
111
+ @ include_model " observe_submodel"
112
+ @ include_model " pdb_eight_schools_centered"
113
+ @ include_model " pdb_eight_schools_noncentered"
114
+ @ include_model " von_mises"
116
115
117
116
# The entry point to this script itself begins here
118
117
if ARGS == [" --list-model-keys" ]
0 commit comments