Earlier quoted context omitted.
Thanks for the explanation in the link. The problem that is described in the link is clearly solvable, however what I'm referring to is more fundamental. I'm not talking about nested binds, but just a simple bind such as "z = bind -> x.get() + y.get()". This will add listeners to x and y. When will those listeners be removed again (without adding new ones during the recalculation of z's new value in case of a change…
Yeah, this is what I'm talking about - a fuller explanation would require more text. :) The question is what you're doing with z. As long as you're also adding and removing your hypothetical panels in turn with bind, you're good: div {class: 'container'}, bind -> [ if show.get() div {class: 'z'}, bind -> x.get() + y.get() else div {class: 'nothing'} ] The question is what happens at the top level or when you want to…
bind is "stupid" in the way that it completely recalculates a cells value on any change of a cell it's previous calculation depended on. It doesn't "understand" the calculation in a way to only recalculate the part that was strictly needed to update its value to a change.
I mention this because if the entire UI is in a bind, then on every change the entire UI would be recreated. I worry that this could get prohibitively slow on a sufficiently complex UI? (It can also lead to problems with widgets losing focus, but that can be solved in a similar way as in Immediate Mode GUI's).