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
