Eigenpoll : D wish list : Finite sets 

I often end up using an array when I only intended to represent a set, which is wasteful since sets are a more primitive object. Moreover, they are complementary to associative arrays and can share some of the same underlying infrastructure.

Some ideas:

T{} v;
T{} w; // sets of objects of type T

T x;

// operations
v \ w; // difference
v & w; // intersection
v | w; // union

v * w; // cartesian product (if we had pairs)
v + w; // tagged union

x in v; // membership

v < w; // subset (not necessarily proper)
v > w; // superset
v == w; // equality

// casting
T[] a = cast(T[]) v; // arbitrary order
T{} v = cast(T{}) a;

T{} u = cast(T{}) x; // create a singleton set

// iteration
foreach(T x; v){...}

Note: {}'s may be an infeasible choice of syntax, this is probably more obvious to someone else.

Report this item for cleanup