From simon.urbanek at r-project.org  Thu Apr 26 18:53:42 2012
From: simon.urbanek at r-project.org (Simon Urbanek)
Date: Thu, 26 Apr 2012 12:53:42 -0400
Subject: [Rd] delayedAssign changing values
In-Reply-To: <1335455991422-4590242.post@n4.nabble.com>
References: <17B09E7789D3104E8F5EEB0582A8D66FCD1EAC8145@MSGRTPCCRF2WIN.DMN1.FMR.COM>
	<ED11A19C-0066-4D2C-845C-C41747A94BF5@r-project.org>
	<1335455991422-4590242.post@n4.nabble.com>
Message-ID: <D0BEE478-C3F3-47BB-B468-AC0098B94433@r-project.org>


On Apr 26, 2012, at 11:59 AM, ghostwheel wrote:

> It is really strange that the delayedAssign is evaluated in the environment it is called from,

Not quite, it is evaluated in the environment you specify - and you have control over both environments ... see ?delayedAssign


> and thus can have side effects.
> so
> x=2
> y=3
> delayedAssign("x", {y <- 7; y+3}) 
> 
> gives
>> x
> [1] 10
>> y
> [1] 7
> 
> Both x and y changed.
> More intuitive would have been the behavior
> x=2
> y=3
> delayedAssign("x", local({y <- 7; y+3}) ) 
>> x
> [1] 10
>> y
> [1] 3
> which only changes x.
> Or, at least that should be the default behavior....
> 

That is questionable - I think it is more logical for both environments to be the same as default. Just think if it -- the point here is to access lazy evaluation which is exactly what it does - lazy evaluation takes place in the original environment, not in another one.

Cheers,
Simon



> Michael
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/delayedAssign-changing-values-tp4588108p4590242.html
> Sent from the R devel mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
> 



[Rd] delayedAssign changing values
Simon Urbanek