The root node can intercept all messages but its main responsibility (TEA) is to dispatch the messages to the right component(s).
The root node can intercept all messages but its main responsibility (TEA) is to dispatch the messages to the right component(s).
(Each component consists of a view, a model and an update function, the model contains wrapped versions of the children models and dispatched updates get passed into the children updates)
Classic example: if you have a notification bubble near the top of the page, and a notification gets created by some component hidden deep inside the app structure, that message can't be handled in a local sub-model; it must travel all the way to the root node to update the notification bubble stack in the main model.
(Which is why nowadays I prefer to skip the nesting and just have a flat list of all messages in the app. With good spacing and naming, it's quite maintainable and just as solid.)
F(f_1(x_1), f_2(x_2), …, f_n(x_n))
The root function is a collection of projections acting on (x_1, x_2, …).
And the components receive the right set of coordinates to act on.
I’m not sure if it’s clearer that way though.