On Tue, 1 Jul 2008, Duncan Murdoch wrote:

On 30/06/2008 10:56 AM, Luke Tierney wrote:
On Sat, 28 Jun 2008, Peter Dalgaard wrote:

Gabor Grothendieck wrote:
Suppose we do this:


f <- function(...) environment()
e <- f(a = 1, b = 2)
ls(e, all = TRUE)

[1] "..."

e$...

<...>

class(e$...)

[1] "..."

Is there any way of getting a and b given e without
modifying f?

evalq(list(...),e)
$a
[1] 1

$b
[1] 2



I'm wondering though whether we should allow the internal DOTSXP value
of "..." to escape to the user level.  Might be more appropriate for
get(e,"..."), e$... (and as.list.environment and maybe a few other
things) to give the "Error: '...' used in an incorrect context" error
if the value is a DOTSXP.

On the other hand, what Gabor sees in e is what he would see inside f:

f <- function(...) { ls(all=T) }
f(a=1, b=2)
[1] "..."
I don't think we should distinguish between user level in .GlobalEnv and what a user sees inside a function he writes. Stopping a user from seeing ... inside a function would break all sorts of things.

Huh??

Noone is proposing that ls or exist, for example change.  ... is a
special variable that can only be used in special contexts.  Just
evaluating ... gives an error; get("...") used in the same context
probably ought to as well.  What we do now is clearly wrong: return an
undocumented object that can't be used for anyting useful (and
reflects an internal implementation we might want to change).  We need
to either prevent the R_DOTSXP values from leaking out or document
them , define [ methods and figure out what they should do, etc.
Preventing them from leaking out is the sensible thing to do.

luke


Duncan Murdoch


--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa                  Phone:             319-335-3386
Department of Statistics and        Fax:               319-335-3017
   Actuarial Science
241 Schaeffer Hall                  email:      [EMAIL PROTECTED]
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to