From macrakis at alum.mit.edu  Tue Mar 24 00:37:52 2009
From: macrakis at alum.mit.edu (Stavros Macrakis)
Date: Mon, 23 Mar 2009 19:37:52 -0400
Subject: [Rd] dput(as.list(function...)...) bug
Message-ID: <8b356f880903231637v4d5d879dqe51c2d52a73802e4@mail.gmail.com>

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.



[Rd] dput(as.list(function...)...) bug
Stavros Macrakis