Wincent Colaiuta
discusses a variant of the select HOM that takes an arbitrary number of
argument messages. I like it!
My initial implementation actually had arbitrary nesting, but as he discusses with collect, that
requires a trigger message to start, as there is no way of knowing at runtime when the expression terminates. It never occurred to me that this limitation did not apply to select, which can
look at the return type of the messages sent and stop when it reaches a BOOL (char).
Nice.
p.s.: the arbitrary nesting is still in the implementation, with each of the collection processing
HOMs actually running an enumerator and those enumerators stackable, and this is two of the reasons
the implementation is so gnarly: (1) there is extra generality that is not needed and (2) making
that more general mechanism run fast was really, really tricky.
p.p.s: He actually discussed it almost a year ago, but I just saw it now.