Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Peter Bosa
www.oregonmetro.gov From: Tomas Kalibera Sent: Wednesday, August 23, 2017 12:54 AM To: Peter Bosa Cc: Lionel Henry; Martin Maechler; R-devel@r-project.org Subject: Re: [Rd] Possible repeat{} / break function bug in R 3.4.1 Fixed in 73112. If you needed to run this code in

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Tomas Kalibera
return can be used to set the return value of an expression evaluated by "eval" expr <- quote(if (x) return(1) else return(2)) x <- FALSE eval(expr) #2 Tomas On 08/23/2017 09:46 AM, Lionel Henry wrote: oops, I should have tried it: expr <- quote(break) repeat(eval(expr)) So eva

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Tomas Kalibera
Fixed in 73112. If you needed to run this code in unpatched versions of R, you can disable the problematic compiler optimization in the loop for instance by adding "eval(NULL)" to the body of the loop. However, please do not forget to remove this for future versions of R and specifically do no

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Lionel Henry
oops, I should have tried it: expr <- quote(break) repeat(eval(expr)) So eval() has hybrid semantics where `break` has more reach than return(), weird. expr <- quote(return()) repeat(eval(expr)) # infloop Lionel > On 23 août 2017, at 09:24, Tomas Kalibera wrote: > > It is

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Tomas Kalibera
It is a bug in the byte-code compiler. I will fix Tomas On 08/23/2017 09:22 AM, Lionel Henry wrote: I don't think that's a bug. source() uses eval(), and eval() creates a new function-like context frame. In a way expecting `break` to work inside source() is like expecting `break` to cross stack

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Lionel Henry
I don't think that's a bug. source() uses eval(), and eval() creates a new function-like context frame. In a way expecting `break` to work inside source() is like expecting `break` to cross stack frames: my_break <- function() break repeat(my_break()) Lionel > On 23 août 2017, at 09:17,

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Martin Maechler
> Martin Maechler > on Wed, 23 Aug 2017 09:10:20 +0200 writes: > Peter Bosa > on Tue, 22 Aug 2017 14:39:50 + writes: >> Hello, I've noticed the following error using repeat{} / break in R 3.4.1 running on Windows 10 and Windows Server 2008 (both 64-bit environme

Re: [Rd] Possible repeat{} / break function bug in R 3.4.1

2017-08-23 Thread Martin Maechler
> Peter Bosa > on Tue, 22 Aug 2017 14:39:50 + writes: > Hello, I've noticed the following error using repeat{} / break in R 3.4.1 running on Windows 10 and Windows Server 2008 (both 64-bit environments). > When running a repeat function, the break command causes an error