On Fri, Feb 26, 2010 at 12:41 AM, Peter Danenberg <p...@roxygen.org> wrote: >> Also other object systems which are alternatives to proto seem less >> relevant than basic scoping and free variable lookup in functions. > > Sorry, but that seems absurd; object systems are less relevant to each > other than the totally orthogonal question of scope?
Yes, if you are using one then obviously you have decided to use it in place of the other. Also your example of S3 was misleading since it used lists which do not have inheritance and did not truly illustrate S3. Free variables in S3 methods follow the same lookup procedure as ordinary functions and using S3 together with proto works well. In fact, proto uses two S3 classes. > >> proto does that but uses the consistent default rather than the >> inconsistent default that you prefer. > > $.proto falls back upon get(), I presume, because the authors didn't > feel like recursing up the parent hierarchy themselves; I'll continue > to believe that the scope pollution was an oversight until they > contradict me. At which point I'll probably switch object systems. Here I think you are admitting that the basic facilities of R do work in the way proto does. Also, your alternative likely would be unusable due to performance whereas proto is fast enough to be usable (see list of applications that use it at http://r-proto.googlecode.com/#Applications). Its not as fast as S3 (though sometimes you can get it that fast by optimizing your code). The development version of proto is even faster than the current version of proto due to the addition of lazy evaluation. > Vague appeals to consistency, when you're really only talking about > naive get() semantics, don't mean much; especially after you've spent > hours debugging mysterious bugs resulting from scope pollution. In end it seems that your real beef is with R so perhaps you should be using a different language. With respect to proto its really just discussing whether to use proto(baseenv(), ...) vs proto(...) since the former gives you everything you want and the distinction seems pretty trivial given how easy it is to use one or the other. If you used iolanguage or similar you would have to specify Object so there is not even a penalty in terms of compactness. There have also been threads on how to "fix" scoping in R for individual functions and various manipulations of environments have been suggested but in the end no one does this in practice. In proto at least you can do the part you want and its trivial to do so. ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel