I think this where I’ve been a little unclear (perhaps more clear now, thanks!). Fundamentally i am confused about the usage and understanding of the term Ugen in these contexts.
When you say “the result must be a UGen” (and so gate is an array of UGens as confirmed by polling as per @dkmayer’s suggestion… thanks!) you are not describing any specific unit generator (it is not a type of UGen like SinOsc, which i guess was my question as to “what gates IS”). It is rather a control value (which according to the poll is indeed a ugen). But (as per the Help definition) UGens represent calculations with signals_and are used to generate or process both audio and control signals. But now we are using the term UGen in both its signal genration context AND as the control value outcome of a process.
I hope my confusion makes sense… i’ve no C programming experience and definitive explanations on these areas are hard to find (and are not really covered the more introductory materials I’ve been studying).