Thank you very much. That is a lot of food for thought.
Your comment brings 3 thoughts to me:
1. Compositionality should enable elegant combinations of GUIs. Our programming language primitives are finite, yet there are infinite ways to combine them. Just as there is 26 letters in the alphabet, and yet we we have a growing language.
2. Domain modelling matters. Constraints on the system should be on the domain we are working within. Hence the primitives would have to be designed according to the domain.
3. Something about "constraints" and "creativity".