[Rd] dput(as.list(function...)...) bug
Stavros Macrakis
macrakis at alum.mit.edu
Tue Mar 24 00:37:52 CET 2009
Tested in R 2.8.1 Windows
> ff <- formals(function(x)1)
> ff1 <- as.list(function(x)1)[1]
# ff1 acts the same as ff in the examples below, but is a list rather
than a pairlist
> dput( ff , control=c("warnIncomplete"))
list(x = )
This string is not parsable, but dput does not give a warning as specified.
> dput( ff , control=c("all","warnIncomplete"))
list(x = quote())
This string is parseable, but quote() is not evaluable, and again dput
does not give a warning as specified.
In fact, I don't know how to write out ff$x. It appears to be the
zero-length name:
is.name(ff$x) => TRUE
as.character(ff$x) => ""
but there is no obvious way to create such an object:
as.name("") => execution error
quote(``) => parse error
The above examples should either produce a parseable and evaluable
output (preferable), or give a warning.
-s
PS As a matter of comparative linguistics, many versions of Lisp allow
zero-length symbols/names. But R coerces strings to symbols/names in
a way that Lisp does not, so that might be an invitation to obscure
bugs in R where it is rarely problematic in Lisp.
PPS dput(pairlist(23),control="all") also gives the same output as
dput(list(23),control="all"), but as I understand it, pairlists will
become non-user-visible at some point.
More information about the R-devel
mailing list