Exchange of information between functions aside from argument/return-value interface
On Wed, 4 Apr 2007, Peter Ruckdeschel wrote:
Thank you, Luke, for your promptous response. [snipped away my original message; to be found on https://stat.ethz.ch/pipermail/r-devel/2007-April/045216.html]
Sounds like lexical scoping should work for this also -- use <<- to assign to the variable in the containing scope. Best, luke
yes, in my application, this really solves the problem. Thank you. But I am not quite sure for the general situation: Recall that we have the sequence of calls myF() calls notmyG() which --with possibly more functions involved in between-- directly or indirectly calls myH(). Now, if I do not know exactly which variables are defined in the intermediate notmyG() or in some of the functions called "in between", I would have thought that using VariableInMyF <<- something within myH() bears the danger that I am overwriting a variable of name VariableInMyF in notmyG() and "in-between's" instead of in myF(). Or did I get something wrong?
I think you did. You seem to be thinking in terms of dynamic scope, which looks for variables in the caller and then the caller's caller. Lexical scope addresses exactly this problem. In lexical scope variable references are resolved on the basis of how function definitions are nested in the written code (hence the term lexical). If you define myH inside myF then free variables in myH are looked up first in myF and then in the context where myF is defined. How myH is called does not matter. Nested functions in Pascal work the same way if that helps. [In terms of the internal implementation, the enclosing environment of the environment of myH is the frame of the call to myF that created myH.] Best, luke THis is exactly the pro
Thanks for your help Peter
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke at stat.uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu