[Rd] return (x+1) * 1000
Henrik Bengtsson
henr|k@bengt@@on @end|ng |rom gm@||@com
Sat Nov 21 00:52:10 CET 2020
Without having dug into the details, it could be that one could update
the parser by making a 'return' a keyword and require it to be
followed by a parenthesis that optionally contains an expression
followed by end of statement (newline or semicolon). Such a
"promotion" of the 'return' statement seems backward compatible and
would end up throwing syntax errors on:
function() return
function() return 2*x
function() return (2*x) + 1
while still accepting:
function() return()
function() return(2*x)
function() return((2*x) + 1)
Just my two Friday cents
/Henrik
On Fri, Nov 20, 2020 at 3:37 PM Dénes Tóth <toth.denes using kogentum.hu> wrote:
>
> Yes, the behaviour of return() is absolutely consistent. I am wondering
> though how many experienced R developers would predict the correct
> return value just by looking at those code snippets.
>
> On 11/21/20 12:33 AM, Gabriel Becker wrote:
> > And the related:
> >
> > > f = function() stop(return("lol"))
> >
> > > f()
> >
> > [1] "lol"
> >
> >
> > I have a feeling all of this is just return() performing correctly
> > though. If there are already R CMD CHECK checks for this kind of thing
> > (I wasnt sure but I'm hearing from others there may be/are) that may be
> > (and/or may need to be) sufficient.
> >
> > ~G
> >
> > On Fri, Nov 20, 2020 at 3:27 PM Dénes Tóth <toth.denes using kogentum.hu
> > <mailto:toth.denes using kogentum.hu>> wrote:
> >
> > Or even more illustratively:
> >
> > uneval_after_return <- function(x) {
> > return(x) * stop("Not evaluated")
> > }
> > uneval_after_return(1)
> > # [1] 1
> >
> > On 11/20/20 10:12 PM, Mateo Obregón wrote:
> > > Dear r-developers-
> > >
> > > After many years of using and coding in R and other languages, I
> > came across
> > > something that I think should be flagged by the parser:
> > >
> > > bug <- function (x) {
> > > return (x + 1) * 1000
> > > }
> > >> bug(1)
> > > [1] 2
> > >
> > > The return() call is not like any other function call that
> > returns a value to
> > > the point where it was called from. I think this should
> > straightforwardly be
> > > handled in the parser by flagging it as a syntactic error.
> > >
> > > Thoughts?
> > >
> > > Mateo.
> > > --
> > > Mateo Obregón.
> > >
> > > ______________________________________________
> > > R-devel using r-project.org <mailto:R-devel using r-project.org> mailing list
> > > https://stat.ethz.ch/mailman/listinfo/r-devel
> > >
> >
> > ______________________________________________
> > R-devel using r-project.org <mailto:R-devel using r-project.org> mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
>
> ______________________________________________
> R-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list