You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I first introduced support for optional trailing arguments in the Gen dynamic modeling language (see #195), the way I added this functionality to update and regenerate was to assume that default argument vaues would always override the arguments specified in the previous trace that update or regenerate was applied to.
This behavior was easier to implement, but now that I think about it, quite unnatural: Usually, if you're running a MCMC or SMC algorithm on a trace, you want to keep any optional trailing arguments fixed, rather than having to repeatedly specify their values.
As such, I'm proposing that for any optional trailing arguments that are not explicitly specified in a call to update or regenerate, update or regenerate should keep the argument values stored in the previous trace. This would not be hard to implement. It would be a breaking change, but I don't think tons of code relies on the current default behavior because of how unnatural it is.
The text was updated successfully, but these errors were encountered:
This makes a lot of sense -- is it fair to think of unspecified default values as implicitly converted to NoChange argdiffs? There's a more general change where positional arguments are optional as well for update and regenerate (anything not specified is cast to NoChange from the previous trace's arguments).
Interesting, thanks! I think we could make that part of the spec for update, but it may be hard to support across implementations of the GFI?
Alternatively, we could add a new generic implementation of update and regenerate that checks whether the number of newly supplied arguments is equal to the number of previous arguments, then pads the new arguments with the previous arguments as necessary. But has to be done dynamically, since there's no easy way to check the type of the arguments contained in the previous trace. (It'll also require specific implementations of update to have a different name than update, so that the generic implementation of update can call update_impl under the hood.)
When I first introduced support for optional trailing arguments in the Gen dynamic modeling language (see #195), the way I added this functionality to
update
andregenerate
was to assume that default argument vaues would always override the arguments specified in the previous trace thatupdate
orregenerate
was applied to.This behavior was easier to implement, but now that I think about it, quite unnatural: Usually, if you're running a MCMC or SMC algorithm on a trace, you want to keep any optional trailing arguments fixed, rather than having to repeatedly specify their values.
As such, I'm proposing that for any optional trailing arguments that are not explicitly specified in a call to
update
orregenerate
,update
orregenerate
should keep the argument values stored in the previous trace. This would not be hard to implement. It would be a breaking change, but I don't think tons of code relies on the current default behavior because of how unnatural it is.The text was updated successfully, but these errors were encountered: