Some of the schemes that Tom Savor mentions are best implemented using an invocation or usage count. Such constructs as
|&WhosisDId setc '__whosis_declared__' | gblb &(&WhosisDId) yield a created global binary/boolean set symbol that has the default value boolean zero. Then whenever an instance of a Whosis is encountered such statements as |&Whosis_declared setb (&(&WhosisDId)) | aif (&Whosis_declared).Whosis_declared | . . . <generate Whosis declaration> . . . |&(&WhosisDId) setb 1 |.Whosis_declared anop can, for example, be used to ensure that at most one declaration of the properties of a Whosis is inserted into a source program. I like to call schemes of this sort Unitarian ones in homage to Whitehead's celebrated definition of a Unitarian as someone "who believes in, at most, one God". John Gilmore, Ashland, MA 01721 - USA
