begin; comment this example was provided by Bob Tennentto 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 ;