Jonathan M Davis:

> Except that then you get the issue of eager vs lazy concatenation. chain is 
> lazy 
> whereas ~ is eager, so that wouldn't fly.

In dlibs1 I have a lazy chain(). If you perform a chain(chain(x, y), z) or 
chain(x, chain(y, z)) it's rewritten as chain(x,y,z). Plus there's a 
"chainable" mixin. If you mix it into a struct or class, the struct or class 
defines the ~ and ~= operators, making them mean chain(). All this requires no 
changed in the compiler front-end, and I think it doesn't have the problem you 
mention.

Bye,
bearophile

Reply via email to