[Rd] Attributes of top level environments clobbered (was Re: [R] possible bug in function 'var' in R 2.7.2?)

Luke Tierney luke at stat.uiowa.edu
Fri Oct 3 18:46:35 CEST 2008


On Fri, 3 Oct 2008, Gabor Grothendieck wrote:

> On Fri, Oct 3, 2008 at 11:43 AM, Luke Tierney <luke at stat.uiowa.edu> wrote:
>> I will look into fixing it sometime if no one else feels like doing
>> it.  The environment aspect is not high priority; some other related
>> issues are more so (locking and active bindings as I recall).  But
>> even thoughs may not make it to the top of my queue any time soon.
>>
>> The issue of placing attributes on environments has come up before,
>> many times.  It is routinely advised against.  For better or worse,
>> the way environments were exposed to the R level is not designed to
>> support this properly.  Fixing this so that attributes are supported
>> reliably is non-trivial, and it is hard to justify the effort given
>> that there are standard work-arounds (such as putting the environment
>> in a list and attaching attributes to the list).  An alternative way
>> of removing the issues associated with attributes on environments, in
>> line with the way NULL works, is to disable placing attributes on
>> environments, at least from the R level.  This option is looking
>> increasingly attractive.
>
> These are not good options:
>
> - the workaround does not allow one to inherit methods.  This
> implies tediously rewriting or writing wrappers every inherited method
> in any such subclass.  Its really tantamount to eliminating OO for
> environments which is not a reasonable solution for a language that
> is supposed to be OO.

It would mean sealing environments, making them final, pick your
favorite OO terminology.  Standard thing to do in many OO languages
when it is wararanted.

> - eliminating attributes on environments is even worse since widely
> used packages such as proto, ggplot2 and other packages would suffer.
> Maintaining reasonable compatiblity should be a goal of the core
> development.  It would be better to document the current situation than
> to make such a retrograde change.

The authors of proto would finally need to bite the bullet and address
this issue.  This would make proto more reliable in the end.

luke

> - if time is a problem perhaps the core group needs to add resources
> to reasonably address the problems in R.  Traditional economics
> do not apply to an open source project.  There is no monetary cost to
> adding additional developers.
>>
>> luke
>>
>> On Fri, 3 Oct 2008, Gabor Grothendieck wrote:
>>
>>> On Fri, Oct 3, 2008 at 3:23 AM, Martin Maechler
>>> <maechler at stat.math.ethz.ch> wrote:
>>>>
>>>> a much better (and much less error-prone) idea would be to install
>>>> R 2.8.0 alpha  even now.
>>>> It will become 'beta' early next week.
>>>>
>>>> We are asking the R community to please install and use
>>>> pre-release versions of R  (if you can / are allowed to)
>>>> at least from beta onwards, and report problems you see early on
>>>> *before* the final release.
>>>
>>> The bug discussed in the following year-old post suggested that
>>> the problem of clobbering attributes of top level environment objects
>>> would be fixed for 2.7 but its still in R version 2.7.2 (2008-08-25)"
>>> and also still in  "R version 2.8.0 alpha (2008-10-01 r46589)"
>>>
>>>  https://stat.ethz.ch/pipermail/r-devel/2007-October/047184.html
>>>
>>> The Avoiding R Bugs section of this page:
>>>
>>>  http://r-proto.googlecode.com
>>>
>>> has more discussion as well as a list of some other R bugs.
>>>
>>> This can be tested by creating a package with these two files only:
>>>
>>> ---DESCRIPTION---
>>> Package: testlazy
>>> Version: 1.0-0
>>> Date: 2008-10-03
>>> Title: Test lazy loading
>>> Author: G Grothendieck
>>> Maintainer: G Grothendieck <ggrothendieck at gmail.com>
>>> Description: Test lazy loading with top level objects.
>>> Depends: proto
>>> LazyLoad: yes
>>> License: GPL-2
>>> ---R/testlazy.R---
>>> TopLevel <- proto()
>>> ---
>>>
>>> And then testing it:
>>>
>>> library(testlazy)
>>> class(TopLevel)
>>>
>>> If its class is "environment" only then the class attribute was stripped.
>>>
>>> ______________________________________________
>>> R-devel at r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>>
>>
>> --
>> 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:      luke at stat.uiowa.edu
>> Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu
>>
>

-- 
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:      luke at stat.uiowa.edu
Iowa City, IA 52242                 WWW:  http://www.stat.uiowa.edu



More information about the R-devel mailing list