Just need to vent a little about this... This is very nice:
class Foo { string doSomething(string str) { return ...; } void blah(int[] arr, string[] defines) { auto a = arr .filter!"a<10"() .map!"a*2"() .reduce!"a+b"(); auto b = defines.map!`"--define="~a`() .join(" ") .to!string() .doSomething(); // ---- or ---- auto a = arr .filter!"a<10"() .map!"a*2"() .reduce!"a+b"(); auto b = defines .map!`"--define=" ~ a`() .join(" ") .to!string() .doSomething(); } } ...except for the fact it don't work. Instead, we do: class Foo { string doSomething(string str) { return ...; } void blah(int[] arr, string[] defines) { auto a = reduce!"a+b"( map!"a*2"( filter!"a<10"(arr) ) ); auto b = doSomething( to!string( join(map!`"--define=" ~ a`(defines), " ") ) ); // ---- or ---- auto a = reduce!"a+b"( map!"a*2"( filter!"a<10"(arr) ) ); auto b = doSomething( to!string( join( map!`"--define=" ~ a`(defines), " " ) ) ); // ---- or ---- // ..."make a bunch of useless temps" example omitted b/c I don't feel like writing it... } } Fucking butt-ugly. (Translation: Next-to-impossible to read.) That's all I wanted to say. /transmission-end