myFooContainer <list ofType(Foo) sorted persistent withIterators>Adding a layer in effect adds methods and/or adds arguments to existing methods. Layers can be mixed and matched in a very flexible way. GenVoca creates C++ code. One example was a tree data type whose memory allocation layer could be one of: a fixed array (for speed), a series of large RAM blocks (for large in-memory trees), and a full distributed memory system (for terabyte sized trees).
http://www.cs.utexas.edu/users/schwartz/Awards.html http://citeseer.ist.psu.edu/batory97composition.html The GenVoca Model of Software-System Generators http://csdl.computer.org/comp/mags/so/1994/05/s5089abs.htm terse description http://www.program-transformation.org/Transform/GenVoca A Distributed Architecture Definition Language: a DADL (mentions GenVoca and related work) http://www-db.stanford.edu/~burback/dadl/control.html