Peter Dalgaard BSA wrote:
J.C.Rougier@durham.ac.uk writes:
I'm just back from a computer practical where we ran into
"f" <- function(x) 2(x^2) # for 2 * x^2
This definition was taken as legitimate, although using the function generated the error message
f(3)
Error in f(3) : attempt to apply non-function Am I right in thinking that in prevous versions of R this definition would have been declared as a syntax error?
I don't think so... Splus 3.4 does likewise:
2(3)
Error: "2" is not a function
"f" <- function(x) 2(x^2) f(3)
Error in f(3): "2" is not a function Dumped
Surely a number before an opening parenthesis is always a syntax error?
Sounds like it might be so (although sometimes there are surprises). However, it may not be all that easy or worth it to fix the parser to recognise this case. In general you can have any expression evaluating to the function to be called. If you do f(x)(3), f(x) may or may not be a function and you can only detect whether it is one at runtime.
From the parsers point of view there are only a few cases where it is
manifestly obvious that an expression cannot lead to a valid function. Consider for instance the following silly stunt:
g<-function(x){"+"<-function(x,y)log;(2+2)(x)}
g(3)
[1] 1.098612
I agree--I'd call this a type error in evaluation, not a syntax error. One thing to keep in mind is that R expressions can be used for things other that evaluation, for example in representing aspects of models. Someone might want at some point to attach meaning to something like y ~ 2(x)+z That would be impossible (or at least very dificult) if the expression were made syntactically invalid. It would be possible to have a semantic checking tool for R that walks over the code and warns when it sees such an expression, but it should not be considered an error since it could be legitimate. luke
Luke Tierney University of Minnesota Phone: 612-625-7843 School of Statistics Fax: 612-624-8868 313 Ford Hall, 224 Church St. S.E. email: luke@stat.umn.edu Minneapolis, MN 55455 USA WWW: http://www.stat.umn.edu -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html Send "info", "help", or "[un]subscribe" (in the "body", not the subject !) To: r-devel-request@stat.math.ethz.ch _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._