Dear Jens:

Enclosed is the reference to the GEM paper.
I think there is a connection to your paper:
The Essence of the Visitor Pattern
http://www.cs.purdue.edu/homes/palsberg/publications.html

-- Karl
------------------

Early work on GEM, the predecessor of Demeter.

Had a procedure Walk(s: SynDomSet; n : Node; function f: Node)
which allows simple visitor programming. Walks the syntax tree
in preorder and executes the function f for every subtree
whose type is in s. Allows to collect information from
a syntax tree in a structure-shy way.

Would now be written in the following form:

from A to {X,Y,Z}
  {X,Y,Z} execute some code

The code can distinguish between the different
node types looking effectively like a visitor.

Also had the idea of "long-getters":
function Get(s: SynDomSet; n : Node): Node
traverses the tree in preorder and returns the first tree whose
type is in s. Allows to get nested parts in a structure-shy way.


Bibtex entry:

@INPROCEEDINGS{andrew:gem,
AUTHOR = "A.V. Goldberg and K.J. Lieberherr",
TITLE = "{GEM: A generator of environments for metaprogramming}",
BOOKTITLE = "SOFTFAIR II, ACM/IEEE Conference on Software Tools",
ADDRESS ="San Francisco",
YEAR = 1985,
PAGES = "86-95"
}