[Rd] Status of reserved keywords and builtins

Karl Millar kmillar at google.com
Thu Dec 12 20:08:18 CET 2013


According to http://cran.r-project.org/doc/manuals/r-release/R-lang.html#Reserved-words

  if else repeat while function for in next break
  TRUE FALSE NULL Inf NaN
  NA NA_integer_ NA_real_ NA_complex_ NA_character_
  ... ..1 ..2 etc.

are all reserved keywords.


However, in R 3.0.2 you can do things like:
   `if` <- function(cond, val1, val2) val2
after which
   if(TRUE) 1 else 2
returns 2.

Similarly, users can change the implementation of `<-`, `(`, `{`, `||` and `&&`.


Two questions:
  - Is this intended behaviour?

  - If so, would it be a good idea to change the language definition
to prevent this?  Doing so would both have the benefits that users
could count on keywords having their normal interpretation, and allow
R implementations to implement these more efficiently, including not
having to lookup the symbol each time.  It'd break any code that
assumes that this is valid, but hopefully there's little or no code
that does.

Thanks

Karl



More information about the R-devel mailing list