From ggrothendieck at gmail.com  Sun Jan  7 16:01:49 2007
From: ggrothendieck at gmail.com (Gabor Grothendieck)
Date: Sun, 7 Jan 2007 10:01:49 -0500
Subject: [Rd] environmentName
In-Reply-To: <45A0D9C4.2090508@stats.uwo.ca>
References: <971536df0701070201n511119cfh6faae2b5828d445b@mail.gmail.com>
	<45A0D9C4.2090508@stats.uwo.ca>
Message-ID: <971536df0701070701y58646fe8k28e4b3c7bb67f937@mail.gmail.com>

One other comment.  If I place an attribute on the environment as you
suggest that changes all uses of the environment.  I cannot keep the
original environment intact and have a subobject which represents the
original environment plus the attribute.  This is just one example of why
the feature discussed in my wishlist is needed (i.e. the ability to have
the attributes attached to variables rather than to the environment itself).
The only way to handle this currently is with the list(env = ...) construct
and attach the name to that but that is a lot of overhead since its means
that the subobject is not an environment so all environment methods
need to be replicated rather than inherited/delegated from the superobject
which really ought to be properly supported.

On 1/7/07, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
> On 1/7/2007 5:01 AM, Gabor Grothendieck wrote:
> > I noticed the new environmentName in R 2.5.0dev.  Thus I gather that
> > each environment has:
> >
> > (1) a name
> > (2) a hex value
> >
> > so
> >
> > 1. environmentName gets the name.  Is there any way to set the name?
>
> The NEWS entry says:
>
>     o  New function environmentName() to give the print name of
>        environments such as "namespace:base".
>        This is now used by str().
>
> Take a look at the implementation in src/main/builtin.c.  The name isn't
> part of the environment, this is just derived from how the environment
> is being used.
>
> If you want to attach a label to an environment, use an attribute.  You
> can put an S3 class on an environment if you want it to print your label
> by default rather than use the standard print mechanism.
>
> > 2. is there any way to get the hex value for an environment other than doing:
> >        e <- new.env()
> >        capture.output(e)
>
> Not in R code, but there's no use for it in R code, either.  If you want
> to test for whether two variables refer to the same environment, then
> attach a unique label to the environments when you create them and check
> the labels.
>
> Duncan Murdoch
>



[Rd] environmentName
Gabor Grothendieck