begin comment this example was provided by Bob Tennent <rdt@cs.queensu.ca> 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