List comprehensions in D?

David Medlock ashleymedlock at
Sun Jun 25 10:13:46 PDT 2006

David Medlock wrote:
> My meager attempts to clone some list functionality in Python:
> r = [ y for y in array if y > 10 ];
> Pretty cool, IMO.
> -DavidM

in addition,

If you consider that arrays are just machine-optimized versions of 
maps(or graphs) with the allowed index as integers between 0 and N,
then passing a predicate function on those indexes makes some sense.

for containers: (depending on your view of the syntax)

T[]  opIndex( bool delegate(T) dg ) { return items.where( dg ); }
T[]  opIndexAssign( void delegate( inout T) dg ){ items.update( dg ); }

x = vector[ (int t){return t>5;} ]; // subset of vector
vector[] = (inout int x) { x += 100; } ; // update all members of vector

And of course extending to opSlice/opSliceAssign....


More information about the Digitalmars-d mailing list