Hmm, maybe I'm confused about compilation vs interpretation. Let me 
rephrase. Regardless of a how or when statement is evaluated, it must have 
access at least to its parent environments to successfully resolve a symbol.

On Wednesday, July 8, 2015 at 7:34:09 PM UTC-4, Brandon Taylor wrote:
>
> They must exist at runtime and at local scope. Evaluating a symbol is 
> impossible without a pool of defined symbols in various scopes to match it 
> to. Unless I'm missing something?
>
> On Wednesday, July 8, 2015 at 7:26:27 PM UTC-4, Jameson wrote:
>>
>> There are global symbol tables for static analysis / reflection, but they 
>> do not exist at runtime or for the local scope.
>>
>> On Wed, Jul 8, 2015 at 7:06 PM Brandon Taylor <brandon....@gmail.com> 
>> wrote:
>>
>>> Surely environments already exist somewhere inside Julia? How else could 
>>> you keep track of scope? It would be simply a matter of granting users 
>>> access to them. Symbol tables in a mutable language are by default mutable. 
>>> It would certainly be possible only give users access to immutable 
>>> reifications (which could solve a bunch of problems as is). However, it 
>>> seems natural to match mutable symbol tables with mutable reifications, and 
>>> immutable symbol tables with immutable reifications.
>>>
>>>
>>> On Wednesday, July 8, 2015 at 6:50:03 PM UTC-4, Brandon Taylor wrote:
>>>>
>>>> I'm not sure I understand...
>>>>
>>>> On Wednesday, July 8, 2015 at 6:24:37 PM UTC-4, John Myles White wrote:
>>>>>
>>>>> Reified scope makes static analysis much too hard. Take any criticism 
>>>>> of mutable state: they all apply to globally mutable symbol tables.
>>>>>
>>>>> On Wednesday, July 8, 2015 at 10:26:23 PM UTC+2, Milan Bouchet-Valat 
>>>>> wrote:
>>>>>>
>>>>>> Le mercredi 08 juillet 2015 à 13:20 -0700, Brandon Taylor a écrit : 
>>>>>> > All functions. 
>>>>>> Well, I don't know of any language which doesn't have scoping 
>>>>>> rules... 
>>>>>>
>>>>>> Anyway, I didn't say scoping rules are necessarily confusing, I was 
>>>>>> only referring to R formulas. But according to the examples you 
>>>>>> posted, 
>>>>>> your question appears to be different. 
>>>>>>
>>>>>>
>>>>>> Regards 
>>>>>>
>>>>>> > 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? 
>>>>>> > > > > > > > 
>>>>>>
>>>>>

Reply via email to