@@ -278,7 +278,7 @@ function generate_tilde(left, right, model_info)
278
278
ctx = model_info[:main_body_names ][:ctx ]
279
279
sampler = model_info[:main_body_names ][:sampler ]
280
280
281
- @gensym tmpright
281
+ @gensym tmpright tmpleft
282
282
top = [:($ tmpright = $ right),
283
283
:($ tmpright isa Union{$ Distribution,AbstractVector{<: $Distribution }}
284
284
|| throw (ArgumentError ($ DISTMSG)))]
@@ -290,8 +290,8 @@ function generate_tilde(left, right, model_info)
290
290
assumption = [
291
291
:($ out = $ (DynamicPPL. tilde_assume)($ ctx, $ sampler, $ tmpright, $ vn, $ inds,
292
292
$ vi)),
293
- :($ left = $ out[1 ] ),
294
- :($ (DynamicPPL . acclogp!)( $ vi, $ out[2 ]) )
293
+ :($ (DynamicPPL . acclogp!)( $ vi, $ out[2 ]) ),
294
+ :($ left = $ out[1 ] )
295
295
]
296
296
297
297
# It can only be an observation if the LHS is an argument of the model
@@ -303,11 +303,13 @@ function generate_tilde(left, right, model_info)
303
303
if $ isassumption
304
304
$ (assumption... )
305
305
else
306
+ $ tmpleft = $ left
306
307
$ (DynamicPPL. acclogp!)(
307
308
$ vi,
308
- $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vn,
309
+ $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vn,
309
310
$ inds, $ vi)
310
311
)
312
+ $ tmpleft
311
313
end
312
314
end
313
315
end
@@ -321,10 +323,12 @@ function generate_tilde(left, right, model_info)
321
323
# If the LHS is a literal, it is always an observation
322
324
return quote
323
325
$ (top... )
326
+ $ tmpleft = $ left
324
327
$ (DynamicPPL. acclogp!)(
325
328
$ vi,
326
- $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vi)
329
+ $ (DynamicPPL. tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vi)
327
330
)
331
+ $ tmpleft
328
332
end
329
333
end
330
334
@@ -341,7 +345,7 @@ function generate_dot_tilde(left, right, model_info)
341
345
ctx = model_info[:main_body_names ][:ctx ]
342
346
sampler = model_info[:main_body_names ][:sampler ]
343
347
344
- @gensym tmpright
348
+ @gensym tmpright tmpleft
345
349
top = [:($ tmpright = $ right),
346
350
:($ tmpright isa Union{$ Distribution,AbstractVector{<: $Distribution }}
347
351
|| throw (ArgumentError ($ DISTMSG)))]
@@ -353,8 +357,8 @@ function generate_dot_tilde(left, right, model_info)
353
357
assumption = [
354
358
:($ out = $ (DynamicPPL. dot_tilde_assume)($ ctx, $ sampler, $ tmpright, $ left,
355
359
$ vn, $ inds, $ vi)),
356
- :($ left . = $ out[1 ] ),
357
- :($ (DynamicPPL . acclogp!)( $ vi, $ out[2 ]) )
360
+ :($ (DynamicPPL . acclogp!)( $ vi, $ out[2 ]) ),
361
+ :($ left . = $ out[1 ] )
358
362
]
359
363
360
364
# It can only be an observation if the LHS is an argument of the model
@@ -366,11 +370,13 @@ function generate_dot_tilde(left, right, model_info)
366
370
if $ isassumption
367
371
$ (assumption... )
368
372
else
373
+ $ tmpleft = $ left
369
374
$ (DynamicPPL. acclogp!)(
370
375
$ vi,
371
- $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ left ,
376
+ $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft ,
372
377
$ vn, $ inds, $ vi)
373
378
)
379
+ $ tmpleft
374
380
end
375
381
end
376
382
end
@@ -384,10 +390,12 @@ function generate_dot_tilde(left, right, model_info)
384
390
# If the LHS is a literal, it is always an observation
385
391
return quote
386
392
$ (top... )
393
+ $ tmpleft = $ left
387
394
$ (DynamicPPL. acclogp!)(
388
395
$ vi,
389
- $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ left , $ vi)
396
+ $ (DynamicPPL. dot_tilde_observe)($ ctx, $ sampler, $ tmpright, $ tmpleft , $ vi)
390
397
)
398
+ $ tmpleft
391
399
end
392
400
end
393
401
@@ -444,7 +452,6 @@ function build_output(model_info)
444
452
)
445
453
$ unwrap_data_expr
446
454
$ main_body
447
- return
448
455
end
449
456
450
457
$ generator ($ (args... )) = $ (DynamicPPL. Model)($ evaluator, $ args_nt, $ model_gen_constructor)
0 commit comments