[Rd] Trivial typo in help("browser")

Martin Maechler m@ech|er @end|ng |rom @t@t@m@th@ethz@ch
Thu Jul 29 09:57:53 CEST 2021


>>>>> Rui Barradas 
>>>>>     on Thu, 29 Jul 2021 07:52:02 +0100 writes:

    > Hello,

    > R 4.1.0 on Ubuntu 20.04, session info below.

    > I am not an English native speaker but in help("browser"),
    > section Arguments, argument expr, there is a wrong verb
    > tense:

    > "invoked" should be "invoke", right?

    > expr An expression, which if it evaluates to TRUE the
    > debugger will invoked, otherwise control is returned
    > directly.

    > sessionInfo()   R version 4.1.0  .....

Thank you, Rui.   Indeed, there's a typo there.
I claim that it is a missing 'be':  "be invoked" almost surealy
was intended.

As we are on the R-devel mailing list, however, let's dig and learn a bit more:

Note that the *default*  is  `expr = TRUE`
which is already a bit "special" for an "expression"..

Let's try to understand what was meant --- NB a strategy I
strongly recommend even if you're somewhat experienced :

> ff <- function(x) { y <- x^2; browser("in ff():", expr = (y == 4)); y }
> ff(1)
[1] 1
> ff(2)
Called from: ff(2)
Browse[1]> debug at #1: y
Browse[2]> ls.str()
x :  num 2
y :  num 4
Browse[2]> c
[1] 4
> ff(3)
[1] 9
> 

So indeed, it does behave as I expected.
A further experiment, play with

   f2 <- function(x, e=1) { y <- x^2; browser("in ff():", expr = e); y }

shows that  'evaluates to TRUE'  is also
not as precise as it could be, and even "wrong":
 'expr = pi'  also behaves as TRUE,  and even
 'expr = NA'  behaves the same.


I don't know when/how  `expr` was introduced (probably taken
from 'S / S+' ..), but to me it seems actually somewhat a
misnomer because in that generalized sense, *every* 
argument passed to an R function is an "expression".
Instead, what counts is that a low-level as.logical(expr) is not TRUE.

So, yes, the documentation about `expr` definitely needs to be
changed.

Unless I get convincing suggestions for improvements, I'll commit

  \item{expr}{a \dQuote{condition}.  By default, and whenever not false
    after being coerced to \code{\link{logical}}, the debugger will be
    invoked, otherwise control is returned directly.}

(and also amend the formulation a bit later on the help page
 where expr is mentioned again).

Martin


    > Thanks to all R Core Team members for their great work for
    > all of us.

    > Hope this helps,

    > Rui Barradas



More information about the R-devel mailing list