All functions.
On Wednesday, July 8, 2015 at 4:18:09 PM UTC-4, Milan Bouchet-Valat wrote: > > Le mercredi 08 juillet 2015 à 12:57 -0700, Brandon Taylor a écrit : > > If scoping rules are too complicated and cause confusion, why are > > they built into the base implementation of function? > What do you mean? Which function? > > > On Wednesday, July 8, 2015 at 3:48:52 PM UTC-4, Milan Bouchet-Valat > > wrote: > > > Le mercredi 08 juillet 2015 à 12:34 -0700, Brandon Taylor a écrit : > > > > > > > I was aware of those packages (though I hadn't read the > > > discussions > > > > referenced). Macros are great but they are incredibly difficult > > > to > > > > reason with concerning issues of scope (at least for me). > > > Deifying > > > > environments could solve all of these issues (and so much more) > > > in > > > > one fell swoop. > > > On the contrary, I think well-designed macros can be much easier to > > > > > > think about than environments in R. If the macro takes a DataFrame > > > object and an expression, there's no ambiguity about what the scope > > > is. > > > This is even better if variables that should be found in the data > > > frame > > > are passed as symbols, like :var, while standard variables are > > > specified as usual. > > > > > > On the other hand, I find R formulas too flexible and complex to > > > reason > > > about. You never know whether an object will be found in the > > > formula's > > > environment, in one of the parent environments of the > > > function/package > > > you called, in your function, or in the global environment. > > > > > > > > > Regards > > > > > > > On Wednesday, July 8, 2015 at 3:20:00 PM UTC-4, David Gold wrote: > > > > > > > > Some of these issues have been thought about fairly extensively > > > by > > > > > the stats community in particular, precisely on account of the > > > use > > > > > cases you cite: > > > > > > > > > > https://github.com/JuliaStats/DataFrames.jl/pull/472 > > > > > https://github.com/JuliaStats/DataFrames.jl/issues/504 > > > > > > > > > > I think that the matter is still very much an open question. I > > > have > > > > > no sense that anything is going to be added to Base Julia > > > itself. > > > > > Currently, the best way (that I know of, anyway) to achieve the > > > > > > > > delayed evaluation effect is via the use of macros. See for > > > > > instance: > > > > > > > > > > https://github.com/JuliaStats/DataFramesMeta.jl > > > > > https://github.com/one-more-minute/Lazy.jl > > > > > > > > > > I'm hope somebody else will be able to pop in an give a more > > > > > thorough answer, but the above may at least be a place to > > > start. > > > > > > > > > > On Wednesday, July 8, 2015 at 2:03:45 PM UTC-4, Brandon Taylor > > > > > wrote: > > > > > > Hadley Wickham's lazyeval package in R is pretty cool in that > > > you > > > > > > can attach an environment to an expression, pass it in and > > > out of > > > > > > functions with various modifications, and then evaluate the > > > > > > expression within the original environment (or any other > > > > > > environment that you choose). R in general has the functions > > > like > > > > > > list2env and list(environment()) that allow one to convert an > > > > > > > > > environment into a list and back again (list being the R > > > > > > equivalent of a Dict). Are there any plans to add these kind > > > of > > > > > > features to Julia? > > > > > > >