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

Duncan Murdoch <[EMAIL PROTECTED]> 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
~~~~~~~~~~ - ([EMAIL PROTECTED]) 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: [EMAIL PROTECTED] |
+----------------------------------------------------------------------- ----------------+


______________________________________________
R-devel@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to