Re: [Rd] Environment with no parent?

From: Robert Gentleman <rgentlem_at_fhcrc.org>
Date: Wed 09 Feb 2005 - 09:04:41 EST

On Feb 8, 2005, at 12:49 PM, Peter Dalgaard wrote:

> Duncan Murdoch <murdoch@stats.uwo.ca> writes:
>
>> Looking in envir.c, I see this:
>>
>> /* env is now R_NilValue, the base environment */
>>
>> which doesn't give me much hope, but maybe there's a trick....
>>
>> If not, would it be reasonable to install a magic "EmptyEnv" to use as
>> a parent in this sort of situation?
>>
>
> I'm fairly sure the answer is "nope".
>
> It's been annoying me for years, for language aesthetic reasons
> mostly, but also with some consideration of cases like yours, and I've
> been on the brink of implementing a version where the base environment
> was a true environment. Apart from the usual issue of "round tuits",
> I was held back by the fact that one has to consider at least two
> things:
>
> (a) efficiency. Is it expensive no longer to have the base functions
> bound directly to their symbol? (My gut feeling is that with suitable
> hashing and cacheing, the penalty is minimal.)
>
> (b) you can *only* use get and simple variable retrieval in a non-base
> environment with a NULL parent (eval(x <- 1, envir=foo) would give
> 'couldn't find function "<-"' or so). This could cause some confusion.

   And, I think, that a better approach is to implement a proper hash table class
and to then implement environments as hash table + parent (rather than the
current version, which would be environment - parent), but the tuit shortage is devastating on this side of the atlantic (possibly due to the disadvantageous $/euro exchange rate; I'm sure you all can afford more of them :-))

  Robert

>
>
> --
> O__ ---- Peter Dalgaard Blegdamsvej 3
> c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
> (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
> ~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
>
> ______________________________________________
> R-devel@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>

+----------------------------------------------------------------------- 
----------------+
| Robert Gentleman              phone: (206) 667-7700                    
          |
| Head, Program in Computational Biology   fax:  (206) 667-1319   |
| Division of Public Health Sciences       office: M2-B865               
       |
| Fred Hutchinson Cancer Research Center                                 
          |
| email: rgentlem@fhcrc.org                                              
                          |
+----------------------------------------------------------------------- 
----------------+

______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Wed Feb 09 08:26:11 2005

This archive was generated by hypermail 2.1.8 : Fri 18 Mar 2005 - 09:02:46 EST