I don't want to put words in anyone's mouth but I don't think the poster was voicing an unfair criticism so much as explaining his expectation coming from a java background.
On 2/2/06, Berton Gunter <[EMAIL PROTECTED]> wrote: > Just echoing and slightly amplifying Gabor's comment... > > The semantics of R are really based on functional programming (LISP-like) > rather than OOP (JAVA-like)? R's behavior is "proper" from that point of > view; what is "improper" is Fernando's expectation that it should behave > some other way. Of course, one can simulate anything with a Turing machine, > but I consider Fernando's criticisms somewhat "unfair" because he is > expecting R to behave like something he is familiar with rather than as it > was designed to. For this reason, what bothers him seems wholly desirable to > me -- I want there to be well-defined scoping convention (lexical scoping) > for R to find free variables. > > Cheers, > > Bert > > > > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Duncan Murdoch > Sent: Thursday, February 02, 2006 2:16 PM > To: [EMAIL PROTECTED] > Cc: r-help@stat.math.ethz.ch > Subject: Re: [R] How to get the namespace of a function? > > On 2/2/2006 5:05 PM, Fernando Saldanha wrote: > > I am trying to imitate "encapsulation" from other languages like Java > > or C++. Coming from that background, it bothers me that I can commit > > errors like the following: > > > >> x <- 1 > >> f <- function(z) { y <- x; y + 1 } # Mistake: I should have written y <- > z > >> f(10) > > [1] 2 > > > > In a language like Java the interpreter would have noticed that x was > > an undeclared variable and an error message would be issued. R, on the > > other hand, allows the code to run, as x exists in the global > > environment. I was trying to avoid such situations by setting the > > environment of f to be NULL. If there is a better way to catch this > > type of errors I would be interested in knowing about it. > > Put your code in a package, and use a namespace. This isn't perfect, > but it gives you more control than you have when running scripts at the > console. > > There's an article by Luke Tierney in one of R News 3/1 that explains > the search order when namespaces are involved. > > Duncan Murdoch > > > > FS > > > > On 2/2/06, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > >> On 2/2/2006 10:56 AM, Fernando Saldanha wrote: > >>> I declared the environment of the function myfun to be NULL as follows: > >>> > >>> environment(myfun) <- NULL > >> Since version 2.1.0, it's been recommended that you use > >> > >> environment(myfun) <- baseenv() > >> > >> and since 2.2.0, you'll get a warning when using NULL (and you'll get an > >> error in 2.3.0). But why would you want to do that? What are you > >> trying to achieve? > >> > >> Duncan Murdoch > >> > >> > >>> Later on I called that myfun and got an error message because the > >>> function index() in the zoo package was called inside myfun and was > >>> not visible: > >>> > >>> Error in myfun(args) : couldn't find function "index" > >>> > >>> I tried to use zoo::index() instead of index(), but that did not work. > >>> In fact, zoo::index does not work even in the command line: > >>> > >>>> z<-ts(1:5) > >>>> z > >>> Time Series: > >>> Start = 1 > >>> End = 5 > >>> Frequency = 1 > >>> [1] 1 2 3 4 5 > >>>> index(z) > >>> [1] 1 2 3 4 5 > >>>> zoo::index(z) > >>> Error in loadNamespace(name) : package 'zoo' does not have a name space > >>> > >>> How can I qualify index() so that it is visible inside the body of > myfun? > >>> > >>> Thanks for any suggestions, > >>> > >>> FS > >>> > >>> ______________________________________________ > >>> R-help@stat.math.ethz.ch mailing list > >>> https://stat.ethz.ch/mailman/listinfo/r-help > >>> PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > >> > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! > http://www.R-project.org/posting-guide.html > > ______________________________________________ > R-help@stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html