From wilm.schumacher at gmail.com  Fri Oct 21 19:17:33 2016
From: wilm.schumacher at gmail.com (Wilm Schumacher)
Date: Fri, 21 Oct 2016 19:17:33 +0200
Subject: [Rd] anonymous function parsing bug?
In-Reply-To: <CAF8bMcaxjGukTYgcOEbQc6XfF51q65CwqWYPzkxaymGBKS-1Ng@mail.gmail.com>
References: <97dcb35c-9173-5fc6-a499-680a4be15a94@gmail.com>
	<CAF8bMcakY4mDNiFqi2Tj8JeuLXQ74utkrC4J4ArWQLx0LX=E8w@mail.gmail.com>
	<1852931e-89bd-3e9f-934c-2a42361ed414@gmail.com>
	<CAF8bMcaxjGukTYgcOEbQc6XfF51q65CwqWYPzkxaymGBKS-1Ng@mail.gmail.com>
Message-ID: <1ffe617d-5699-95ee-6846-7741ca75e351@gmail.com>

Hi,


Am 21.10.2016 um 18:10 schrieb William Dunlap:
> Are you saying that
>     f1 <- function(x) log(x)
>     f2 <- function(x) { log } (x)
> should act differently?
yes. Or more precisely: I would expect that. "Should" implies, that I 
want to change something. I just want to understand the behavior (or 
file a bug, if this would have been one).

As I wrote, in e.g. node.js the pendents to the lines that you wrote are 
treated differently (the first is a function, the latter is a parsing 
error).

Let's use this example instead:
x <- 20
f1 <- function(x) { x<-x+1; log(x) }
f2 <- function(x) { x<-x+1; log } (x)
which act equally.

But as the latter is a legal statement, I would read it as
f2 <- (function(x) { x<-x+1; log }) (x)

thus, I would expect the first to be a function, the latter to be a 
numeric ( log(20) in this case ).


> Using 'return' complicates the matter, because it affects evaluation, 
> not parsing.

But perhaps it illustrates my problem a little better:
x <- 20
f1 <- function(x) return(log(x))
f2 <- function(x) { return(log) } (x)

f1(10) is a numeric, f2(10) is the log function. Again: as the latter is 
a legal statement, I would expect:
f2 <- (function(x) { x<-x+1; log }) (x)

However, regarding the answers I will try to construct the AST regarding 
the grammar defined in gramm.y of that statement
f2 <- function(x) { x<-x+1; log } (x)
to understand what the R interpreter really does.

Best wishes,

Wilm



[Rd] anonymous function parsing bug?
Wilm Schumacher