Scope ===== We saw in the previous paragraph that functions can be used, and that they can have parameters. This forces us to clarify 'scope'. [source,chapel] ./scope.lm ---- include::code/scope.lm[] ---- We run it with [source,bash] ---- /opt/colm/bin/colm scope.lm ./scope ---- That gives us: ---- in global global in A global in B a in B b in A a in global global in C NIL in C c in global c ---- The thesis also mentions that variables can be passed by reference instead of by value. [source,chapel] .nested_scope.lm ---- include::code/nested_scope.lm[] ---- That gives us: ---- in global global in A global in B a in B b in A a in global global in C NIL in C c in global c ---- [source,bash] ---- /opt/colm/bin/colm nested_scope.lm ./nested_scope ---- It seems that this is still the case. ---- in global global before block1 global in block1 block1 in loop block1a in block1 block1a in A block1a in global global ----