On 10/29/06, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > On 10/29/2006 8:03 AM, Gabor Grothendieck wrote: > > On 10/28/06, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > >> On 10/28/2006 6:03 PM, Philippe Grosjean wrote: > >>> Duncan Murdoch wrote: > >>> [...] > >>>> I've just added this function to R-devel (to become 2.5.0 next spring): > >>>> > >>>> withVisible <- function(x) { > >>>> x <- substitute(x) > >>>> v <- .Internal(eval.with.vis(x, parent.frame(), baseenv())) > >>>> v > >>>> } > >>>> > >>>> Luke Tierney suggested simplifying the interface (no need to duplicate > >>>> the 3 parameter eval interface, you can just wrap this in evalq() if you > >>>> need that flexibility); the name "with.vis" was suggested, but it looks > >>>> like an S3 method for the with() generic, so I renamed it. > >>>> > >>>> Duncan Murdoch > >>> Excellent, many thanks... but I am afraid I cannot use this function > >>> because you force evaluation on parent.frame(), where I need to evaluate > >>> it in .GlobalEnv (which is NOT equal to parent.frame() in my context). > >>> Would it be possible to change it to: > >>> > >>> withVisible <- function(x, env = parent.frame()) { > >>> x <- substitute(x) > >>> v <- .Internal(eval.with.vis(x, env, baseenv())) > >>> v > >>> } > >>> > >>> ...so that we got additional flexibility? > >> As I said, that's not needed. Use evalq(withVisible(x), envir=.GlobalEnv). > > > > Even if its not strictly necessary in terms of minimality it still might be > > convenient and consistent with other eval-style functions which do tend > > to provide an env= or in the case of lm-style functions a data= argument. > > Also its very easy to do and the underlying internal function supports it. > > I agree with Luke here. It's a bad design to make every function do > everything. This function reveals the "R_visible" flag. It doesn't > need to do anything else. > > Duncan Murdoch >
But I think that consistency with the rest of R is more important here. R is hardly minimal -- its a grab bag of a huge amount of functionality thrown in by numerous people working in parallel so I don't think that minimality is the right principle here. If one did not know the calling sequence I think a reasonable guess would be that there would be such an env= argument so the principle of least surprise suggests that it be there. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel