Block scoping

Glee stores objects in namespaces by name. This tutorial discuses how those objects can be found among many levels of blocks. This is the concept of scope Commentary

Commentary Code Result
Commentary @ => #ns;
10 =>a;
'<1>'(    a*    )$;
'<2>'(  { a* }  )$;
'<3>'( {{ a* }} )$;
 
 
<1>0
<2>1
<3>2
Commentary @ => #ns; 10=>a;
{
  '<1>'('Scope ') (a*) (':') (a)$;
    'abc'=>a;
  '<2>'('Scope ') (a*) (':') (a)$;
};
'<3>'('Scope ') (a*) (':') (a)$;
<1>Scope 1:10
<2>Scope 1:abc
<3>Scope 0:abc
Commentary @ => #ns; 10=>a;
{{
  '<1>'('Scope ') (a*) (':') (a)$;
    'abc'=>a;
  '<2>'('Scope ') (a*) (':') (a)$;
}};
'<3>'('Scope ') (a*) (':') (a)$; 
<1>Scope 2:10
<2>Scope 0:abc
<3>Scope 0:10
Commentary @ => #ns; 10=>a; 'xyz'=>b;
{b@[.b]{
  '<1a>'('a: scope ')(a*)(' value: ')(a) $;
  '<1b>'('b: scope ')(b*)(' value: ')(b ^@) $;
    'abc'=>a; 25=>b;
  '<2a>'('a: scope ')(a*)(' value: ')(a) $;
  '<2b>'('b: scope ')(b*)(' value: ')(b ^@) $;
}};
'<3a>'('a: scope ')(a*)(' value: ')(a) $;
'<3b>'('b: scope ')(b*)(' value: ')(b) $;
<1a>a: scope 2 value: 10
<1b>b: scope 0 value: xyz
<2a>a: scope 0 value: abc
<2b>b: scope 0 value: 25
<3a>a: scope 0 value: 10
<3b>b: scope 0 value: 25
Commentary @ => #ns; 10=>a; 'xyz'=>b;
{b@[.b]{
  '<1a>'('a: scope ')(a*)(' value: ')(a) $;
  '<1b>'('b: scope ')(b*)(' value: ')(b ^@) $;
    {
      'abc'=>a; 25=>b;
      '<1-2a>'('a: scope ')(a*)(' value: ')(a) $;
      '<1-2b>'('b: scope ')(b*)(' value: ')(b ^@) $;
    }
  '<2a>'('a: scope ')(a*)(' value: ')(a) $;
  '<2b>'('b: scope ')(b*)(' value: ')(b ^@) $;
}};
'<3a>'('a: scope ')(a*)(' value: ')(a) $;
'<3b>'('b: scope ')(b*)(' value: ')(b) $;
<1a>a: scope 2 value: 10
<1b>b: scope 0 value: xyz
<1-2a>a: scope 0 value: abc
<1-2b>b: scope 1 value: 25
<2a>a: scope 2 value: 10
<2b>b: scope 0 value: 25
<3a>a: scope 0 value: 10
<3b>b: scope 0 value: 25