From hb at maths.lth.se  Wed Nov 24 07:36:05 2004
From: hb at maths.lth.se (Henrik Bengtsson)
Date: Wed Nov 24 07:36:17 2004
Subject: [Rd] str() resets class for environments
In-Reply-To: <4D99275E380CA94F998977EDACE548DC062517@extas2-hba.tas.csiro.au>
Message-ID: <001c01c4d1ef$e1158790$01000001@hblaptop>

> -----Original Message-----
> From: r-devel-bounces@stat.math.ethz.ch 
> [mailto:r-devel-bounces@stat.math.ethz.ch] On Behalf Of 
> Mark.Bravington@csiro.au
> Sent: Wednesday, November 24, 2004 1:43 AM
> To: hb@maths.lth.se
> Cc: r-devel@stat.math.ethz.ch
> Subject: RE: [Rd] str() resets class for environments
> 
> 
> Henrik Bengtsson wrote:
> 
> > Should attr()<-, attributes()<-,
> > class()<- give an error when applied to an environment? I see
> > no reason why
> > not.
> 
> It would break the workspace-organization code in the 
> 'mvbutils' package, which relies on being able to set and 
> unset attributes of environments on the search path 
> (specifically, the 'name' and 'path' attributes).
> 
> So personally I'd much prefer not to have this happen! For 
> the wider R community, I'm not sure how many users the 
> 'mvbutils' package has, but I think it's a fair number 
> judging from emails I get. 
> 
> If you do feel the extra security is vitally important, 
> perhaps there could be 'lock.attributes' and 
> 'unlock.attributes' functions for environments. The idea 
> would be that each environment has an invisible (i.e. 
> internal) mock-attribute "locked", which would be TRUE by 
> default (on creation of the environment). While "locked" is 
> TRUE, any attempt to muck about with the environment's 
> attributes would cause an error. But if you really did need 
> to change attributes of that , it would still be possible by 
> calling 'unlock.attributes' first.

Then I agree with you that it should not be made defunct; in general, if
there is a rational for using a feature in R and if someone relies on it,
then I believe one should be careful and consider alternatives before
removing it. I hope I did not break your code now by bringing it up to the R
core team.

I am curious though, do you not run into problems by setting and getting
attributes on environment in 'mvbutils'? The example of John Chambers I
re-posted, which shows that attributes can (will?) get "killed by operating
on the [environment] object "locally" in a function", suggests that you
will.

Cheers

Henrik
 
> Mark
> 
> *******************************
> 
> Mark Bravington
> CSIRO (CMIS)
> PO Box 1538
> Castray Esplanade
> Hobart
> TAS 7001
> 
> phone (61) 3 6232 5118
> fax (61) 3 6232 5012
> Mark.Bravington@csiro.au
> 
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list 
> https://stat.ethz.ch/mailman/listinfo/r-devel
> 
>


[Rd] str() resets class for environments
Henrik Bengtsson