order of operations
On 27/08/2021 3:06 p.m., Enrico Schumann wrote:
On Fri, 27 Aug 2021, Gabor Grothendieck writes:
Are there any guarantees of whether x will equal 1 or 2 after this is run? (x <- 1) * (x <- 2) ## [1] 2 x ## [1] 2
At least the "R Language Definition" [1] says
"The exponentiation operator ?^? and the left
assignment plus minus operators ?<- - = <<-?
group right to left, all other operators group
left to right. That is [...] 1 - 1 - 1 is -1"
which would imply 2.
I think this is a different issue. There's only one operator in question (the "*"). The question is whether x*y evaluates x first or y first (and I believe the answer is that there are no guarantees). I'm fairly sure both are guaranteed to be evaluated, under the rules for group generics listed in ?groupGeneric, but I'm not certain the guarantee is honoured in all cases. Duncan Murdoch