[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