Consider this example
x = ...
if foo:
y = ...
else:
x = ...
y = ...
Critical parts of the ergonomics are thata) in each branch, we have everything in scope that comes from
b) in , we have everything in scope that was assigned or reassigned in the executed branch
I'd love a language that supports programmable stuff like if, since I'm tired of python autodiff not handling `if` and `for`. But it would really need programmable scope stuff to still allow the ergonomic "scope effects" that make `if` and `for` blocks ergonomic.