Re: [Rd] Surpising behavior when using an active binding as loop index in R 4.0.0

2020-05-23 Thread Deepayan Sarkar
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.

-Deepayan

On Sat, May 23, 2020 at 5:45 PM Thomas Friedrichsmeier via R-devel
 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 :
> [...]
> > 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@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel

__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


Re: [Rd] Surpising behavior when using an active binding as loop index in R 4.0.0

2020-05-23 Thread Thomas Friedrichsmeier via R-devel
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 :
[...]
> 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


pgpq_90MQ_lQD.pgp
Description: Digitale Signatur von OpenPGP
__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel


[Rd] Surpising behavior when using an active binding as loop index in R 4.0.0

2020-05-23 Thread Thomas Friedrichsmeier via R-devel
Hi,

I stumbled upon a surprising behavior when using an active binding as a
loop index variable in R 4.0.0. In contrast, the behavior observed in R
3.6.1 is in line with my expectations.

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

Regards
Thomas


pgpyKwfk1KgEj.pgp
Description: Digitale Signatur von OpenPGP
__
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel