# scope of a function + lazy evaluation

5 messages
Open this post in threaded view
|

## scope of a function + lazy evaluation

 Hey guys, I have a doubt here , It is something simple I guess, what am I missing out here ?? f <- function(y) function() y tmp <- vector("list", 5) for (i in 1:5) tmp[[i]] <- f(i) tmp[[1]]() # returns 5; z <- f(6) tmp[[1]]() # still returns 5; it should return 6 "ideally" right ??? Even if  I dont evaluate the function tmp[[1]] before i.e I do rm(list=ls()) f <- function(y) function() y tmp <- vector("list", 5) for (i in 1:5) tmp[[i]] <- f(i)  z <- f(6) tmp[[1]]() # it still returns 5; it should return 6 "ideally" right ???         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: scope of a function + lazy evaluation

 You are missing 'force'. See 'The R Inferno' page 90. In this case you can define: f <- function(y) { force(y); function() y} On 10/05/2010 11:06, sayan dasgupta wrote: > Hey guys, > > I have a doubt here , It is something simple I guess, what am I missing out > here ?? > > > f<- function(y) function() y > tmp<- vector("list", 5) > for (i in 1:5) tmp[[i]]<- f(i) > tmp[[1]]() # returns 5; > > z<- f(6) > tmp[[1]]() # still returns 5; it should return 6 "ideally" right ??? > > Even if  I dont evaluate the function tmp[[1]] before i.e I do > rm(list=ls()) > f<- function(y) function() y > tmp<- vector("list", 5) > for (i in 1:5) tmp[[i]]<- f(i) >   z<- f(6) > tmp[[1]]() # it still returns 5; it should return 6 "ideally" right ??? > > [[alternative HTML version deleted]] > > ______________________________________________ > [hidden email] mailing list > https://stat.ethz.ch/mailman/listinfo/r-help> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code. > -- Patrick Burns [hidden email] http://www.burns-stat.com(home of 'Some hints for the R beginner' and 'The R Inferno') ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: scope of a function + lazy evaluation

 Hey thanks for your help , But thats not exactly the problem I have See I am fine  with tmp[[1]]() being = 5 and not 1; but then for (i in 1:5) tmp[[i]] <- f(i)  z <- f(6) tmp[[1]]() ## "should"  give 6 right ? Because f(6) was last evaluate so in parent.frame() y should be 6 ??? On Mon, May 10, 2010 at 3:44 PM, Patrick Burns <[hidden email]>wrote: > You are missing 'force'. > > See 'The R Inferno' page 90. > > In this case you can define: > > f <- function(y) { force(y); function() y} > > > > On 10/05/2010 11:06, sayan dasgupta wrote: > >> Hey guys, >> >> I have a doubt here , It is something simple I guess, what am I missing >> out >> here ?? >> >> >> f<- function(y) function() y >> tmp<- vector("list", 5) >> for (i in 1:5) tmp[[i]]<- f(i) >> tmp[[1]]() # returns 5; >> >> z<- f(6) >> tmp[[1]]() # still returns 5; it should return 6 "ideally" right ??? >> >> Even if  I dont evaluate the function tmp[[1]] before i.e I do >> rm(list=ls()) >> f<- function(y) function() y >> tmp<- vector("list", 5) >> for (i in 1:5) tmp[[i]]<- f(i) >>  z<- f(6) >> tmp[[1]]() # it still returns 5; it should return 6 "ideally" right ??? >> >>        [[alternative HTML version deleted]] >> >> ______________________________________________ >> [hidden email] mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help>> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html>> and provide commented, minimal, self-contained, reproducible code. >> >> > -- > Patrick Burns > [hidden email] > http://www.burns-stat.com> (home of 'Some hints for the R beginner' > and 'The R Inferno') >         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.