??ANSWER TO EXERCISE 30

[ InScope;
   if (action_to_be == ##Examine or ##Show or ##ShowR)
       PlaceInScope(noslen_maharg);
   if (scope_reason == TALKING_REASON)
       PlaceInScope(noslen_maharg);
];
Note that ShowR is a variant form of Show in which the parameters are 'the other way round': thus "show maharg the phaser'' generates ShowR maharg phaser internally, which is then converted to the more usual Show phaser maharg.

Back to the exercise in section 16
Mechanically translated to HTML from third edition as revised 16 May 1997. Copyright © Graham Nelson 1993, 1994, 1995, 1996, 1997: all rights reserved.