This idiom: ---- foreach (f; listdir(some_dir)) writeln(f); ---- is much more simpler, convenient and clearer than: ---- listdir(some_dir, (string f) { writeln(f) }); ---- Which looks more obscure (specially when the callback is more complex. The first idiom was not possible in D1 without allocating an array for the elements, which can be inefficient, but with ranges in place in D2, I think listdir() should use them. Thanks.
OMG! listdir is a opApply candidate, so foreach can be used already with it... Damn! I should go to bed...