From murdoch.duncan at gmail.com  Wed Dec 31 23:11:22 2014
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Wed, 31 Dec 2014 17:11:22 -0500
Subject: [Rd] Unexpected behavior of debug() in step-wise mode
In-Reply-To: <CAOUXvx7Rt45uKGUXvr6xgF3xkfSwLRqecKEmjR6Qcj0Fvvnfxg@mail.gmail.com>
References: <CAOUXvx7Rt45uKGUXvr6xgF3xkfSwLRqecKEmjR6Qcj0Fvvnfxg@mail.gmail.com>
Message-ID: <54A4748A.2030506@gmail.com>

On 31/12/2014 4:06 PM, Levi Waldron wrote:
> Why does debug() enter Browse[3] here at all, and why does it happen the
> first time and not the second? This seems unexpected to me, and has
> undesirable effects for ESS users (that I reported here -
> https://stat.ethz.ch/pipermail/ess-help/2013-June/009154.html - but just
> realized my post to r-devel didn't make it through when I tried to report
> it back then).
> 

Looks like a bug.  I haven't looked at the source, but I would guess
that the { function is being treated specially when you enter the
function, since usually it's the first thing called in the body.

Since you mention ESS, I'm guessing the {n+2} is automatically
generated, it's not typed by the user. You might be able to generate
some equivalent code instead, e.g.

eval(expression(n+2))


Duncan Murdoch

>> Fun <- function(n) print(n)
>> debug(Fun)
>> Fun(2)
> debugging in: Fun(2)
> debug: print(n)
> Browse[2]> {n+2}
> debug at #1: n + 2
> Browse[3]> c
> [1] 4
> Browse[2]> {n+2}
> [1] 4
> Browse[2]> sessionInfo()
> R version 3.1.2 (2014-10-31)
> Platform: x86_64-apple-darwin13.4.0 (64-bit)
> 
> locale:
> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
> 
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>



[Rd] Unexpected behavior of debug() in step-wise mode
Duncan Murdoch