[Rd] [External] Re: Surpising behavior when using an active binding as loop index in R 4.0.0
iuke-tier@ey m@iii@g oii uiow@@edu
iuke-tier@ey m@iii@g oii uiow@@edu
Sun May 24 17:05:00 CEST 2020
On Sun, 24 May 2020, Deepayan Sarkar wrote:
> A shorter reproducible example:
>
> example(makeActiveBinding)
> for (fred in 1:3) { 0 }
> ls()
>
> Both problems go away if you first do
>
> compiler::enableJIT(2)
>
> So looks like a bug in compiling the for loop.
Not in compiling but in the byte code interpreter. It was not handling
active bindings for the loop variable properly. This was fixed
yesterday in R--devel and R-patched, so will be fixed in R 4.0.1.
Best,
luke
>
> -Deepayan
>
> On Sat, May 23, 2020 at 5:45 PM Thomas Friedrichsmeier via R-devel
> <r-devel using r-project.org> wrote:
>>
>> Possibly just a symptom of the earlier behavior, but I'll amend my
>> example, below, with an even more disturbing observation:
>>
>> Am Sat, 23 May 2020 13:19:24 +0200
>> schrieb Thomas Friedrichsmeier via R-devel <r-devel using r-project.org>:
>> [...]
>>> Consider the code below:
>>>
>>> makeActiveBinding("i",
>>> function(value) {
>>> if (missing(value)) {
>>> x
>>> } else {
>>> print("set")
>>> x <<- value
>>> }
>>> }, globalenv())
>>>
>>> i <- 1 # output "set"
>>> print(i) # output [1] 1
>>>
>>> # Surprising behavior starts here:
>>> for(i in 2:3) print(i) # output [1] "set"
>>> # NULL
>>> # NULL
>>>
>>> print(i) # output NULL
>>> print(x) # output NULL
>>>
>>> i <- 4 # output "set"
>>> print(i) # ouput [1] 4
>>> print(x) # ouput [1] 4
>>
>> ls()
>> # Error in ls() :
>> # Value of SET_STRING_ELT() must be a 'CHARSXP' not a 'NULL'
>>
>> Regards
>> Thomas
>> ______________________________________________
>> R-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Luke Tierney
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-tierney using uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-devel
mailing list