RE: [Rd] str() resets class for environments

From: Henrik Bengtsson <hb_at_maths.lth.se>
Date: Wed 24 Nov 2004 - 17:36:05 EST


> -----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
>
>



R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Nov 24 17:42:31 2004

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:01:43 EST