[Rd] documentation of "scope": possible error + cleanup (PR#5095)
htang at hpl.hp.com
htang at hpl.hp.com
Sat Nov 15 00:00:18 MET 2003
Full_Name: Hsiu-Khuern Tang
Version: 1.8.0
OS: Debian GNU/Linux unstable
Submission from: (NULL) (156.153.255.243)
While reading the R lang info pages, I came across the following
paragraphs in the node "Scope":
>> A simple example,
>>
>> f <- function(x) {
>> y <- 10
>> g <- function(x) x + y
>> return(g)
>> }
>> h <- f()
>> h(3)
>>
>> A rather interesting question is what happens when `h' is evaluated .
>> To describe this we need a bit more notation. Within a function body
>> variables can be bound, local or unbound. The bound variables are those
>> that match the formal arguments to the function. The local variables are
>> those that were created or defined within the function body. The unbound
>> variables are those that are neither local or bound . When a function
>> body is evaluated there is no problem determining values for local
>> variables or for bound variables. Scoping rules determine how the
>> language will find values for the unbound variables.
>>
>> When `h(3)' is evaluated we see that its body is that of `g'.
>> Within that body `x' and `y' are unbound. In a language with lexical
>> scope `x' will be associated with the value 3 and `y' with the value 1
>> 0
>> so `h()' should return the value 13. In R this is indeed what happens
>> .
Possible error: it says in the last paragraph that `x' and `y' are
unbound. Shouldn't it be that `x' is bound, since it is a formal
argument of `h', and `y' is unbound?
Also, in the previous paragraph, the portion
"To describe this we need a bit more notation ... neither local or [sic] bound"
should be removed, since the explanation of bound, local, and unbound
variables had just been given a few paragraphs earlier.
Best,
Hsiu-Khuern.
More information about the R-devel
mailing list