If scoping rules are too complicated and cause confusion, why are they 
built into the base implementation of 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? 
> > > > 
>

Reply via email to