[julia-users] scoping and begin

2014-12-08 Thread Simon Byrne
According to the docs 
, 
begin blocks do not introduce new scope blocks. But this block:

https://github.com/JuliaLang/julia/blob/1b9041ce2919f2976ec726372b49201c887398d7/base/string.jl#L1601-L1618

*does* seem to introduce a new scope (i.e. if I type Base.tmp at the REPL, 
I get an error). What am I missing here?

Simon


Re: [julia-users] scoping and begin

2014-12-08 Thread Isaiah Norton
tmp is declared local to the begin blocks
if that sounds odd (it did to me at first), try typing `local t = 1; t`)

On Mon, Dec 8, 2014 at 6:11 AM, Simon Byrne  wrote:

> According to the docs
> ,
> begin blocks do not introduce new scope blocks. But this block:
>
>
> https://github.com/JuliaLang/julia/blob/1b9041ce2919f2976ec726372b49201c887398d7/base/string.jl#L1601-L1618
>
> *does* seem to introduce a new scope (i.e. if I type Base.tmp at the
> REPL, I get an error). What am I missing here?
>
> Simon
>


Re: [julia-users] scoping and begin

2014-12-08 Thread Simon Byrne
So begin blocks can introduce a scope, they just don't by default?

In your `local t = 1; t` example: what, then, is the scope of t?


On Monday, 8 December 2014 16:56:24 UTC, Isaiah wrote:
>
> tmp is declared local to the begin blocks
> if that sounds odd (it did to me at first), try typing `local t = 1; t`)
>
> On Mon, Dec 8, 2014 at 6:11 AM, Simon Byrne  > wrote:
>
>> According to the docs 
>> , 
>> begin blocks do not introduce new scope blocks. But this block:
>>
>>
>> https://github.com/JuliaLang/julia/blob/1b9041ce2919f2976ec726372b49201c887398d7/base/string.jl#L1601-L1618
>>
>> *does* seem to introduce a new scope (i.e. if I type Base.tmp at the 
>> REPL, I get an error). What am I missing here?
>>
>> Simon
>>
>
>

Re: [julia-users] scoping and begin

2014-12-08 Thread Jeff Bezanson
This is not a behavior of `begin` blocks but of top-level expressions.
Each top-level expression is wrapped in a "soft scope" that can have
its own locals but allows globals to leak in:

julia> a = 0
0

julia> begin
 local x = 1
 a = 2
   end
2

julia> a
2

julia> x
ERROR: x not defined

On Mon, Dec 8, 2014 at 12:02 PM, Simon Byrne  wrote:
> So begin blocks can introduce a scope, they just don't by default?
>
> In your `local t = 1; t` example: what, then, is the scope of t?
>
>
> On Monday, 8 December 2014 16:56:24 UTC, Isaiah wrote:
>>
>> tmp is declared local to the begin blocks
>> if that sounds odd (it did to me at first), try typing `local t = 1; t`)
>>
>> On Mon, Dec 8, 2014 at 6:11 AM, Simon Byrne  wrote:
>>>
>>> According to the docs, begin blocks do not introduce new scope blocks.
>>> But this block:
>>>
>>>
>>> https://github.com/JuliaLang/julia/blob/1b9041ce2919f2976ec726372b49201c887398d7/base/string.jl#L1601-L1618
>>>
>>> does seem to introduce a new scope (i.e. if I type Base.tmp at the REPL,
>>> I get an error). What am I missing here?
>>>
>>> Simon
>>
>>
>


Re: [julia-users] scoping and begin

2014-12-08 Thread Simon Byrne
Ah, that makes more sense now. Thanks.

s

On Monday, 8 December 2014 18:16:48 UTC, Jeff Bezanson wrote:
>
> This is not a behavior of `begin` blocks but of top-level expressions. 
> Each top-level expression is wrapped in a "soft scope" that can have 
> its own locals but allows globals to leak in: 
>
> julia> a = 0 
> 0 
>
> julia> begin 
>  local x = 1 
>  a = 2 
>end 
> 2 
>
> julia> a 
> 2 
>
> julia> x 
> ERROR: x not defined 
>
> On Mon, Dec 8, 2014 at 12:02 PM, Simon Byrne  > wrote: 
> > So begin blocks can introduce a scope, they just don't by default? 
> > 
> > In your `local t = 1; t` example: what, then, is the scope of t? 
> > 
> > 
> > On Monday, 8 December 2014 16:56:24 UTC, Isaiah wrote: 
> >> 
> >> tmp is declared local to the begin blocks 
> >> if that sounds odd (it did to me at first), try typing `local t = 1; 
> t`) 
> >> 
> >> On Mon, Dec 8, 2014 at 6:11 AM, Simon Byrne  
> wrote: 
> >>> 
> >>> According to the docs, begin blocks do not introduce new scope blocks. 
> >>> But this block: 
> >>> 
> >>> 
> >>> 
> https://github.com/JuliaLang/julia/blob/1b9041ce2919f2976ec726372b49201c887398d7/base/string.jl#L1601-L1618
>  
> >>> 
> >>> does seem to introduce a new scope (i.e. if I type Base.tmp at the 
> REPL, 
> >>> I get an error). What am I missing here? 
> >>> 
> >>> Simon 
> >> 
> >> 
> > 
>


Re: [julia-users] scoping and begin

2014-12-09 Thread Toivo Henningsson
That explains a lot. Is it documented?