'BEGIN' 'COMMENT' this example was provided by Bob Tennent to demonstrate non-trivial using call-by-name parameters., this program doesn't work properly with nase-a60 interpreter, however, it does work with the marst translator., for further discussion see: J.C.Reynolds. Syntactic control of interference. In: Conference Record of the 5th Annual ACM Symposium on Principles of Programming Languages, pp.39-46, Tucson, Arizona, January 1978. ACM, New York. P.W.O'Hearn and R.D.Tennent. Parametricity and local variables. J.ACM, 42(3):658-709, May 1995. Preliminary version appeared in Proceedings of POPL 93; 'PROCEDURE' MAKECOUNTER(USER); 'PROCEDURE' USER; 'BEGIN' 'INTEGER' N; 'PROCEDURE' INC; 'BEGIN' N := N-1 'END'; N := 0; USER(-N, INC) 'END'; 'PROCEDURE' MYUSER(VAL, INC); 'INTEGER' VAL; 'PROCEDURE' INC; 'BEGIN' INC; INC; OUTINTEGER(1, VAL); INC; INC; OUTINTEGER(1, VAL) 'END'; MAKECOUNTER(MYUSER); OUTSTRING(1, "\n") 'END'