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
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
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
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
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
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,
> 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
> 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