Open github-actions[bot] opened 7 months ago
Actual syntax is more conservative.
begin
let a = 5;
const b = 3;
global c = 2;
implicit_global = 1;
end
Remaining work here is:
let
as an option for scatter assignment operations so that scatter-assigns are declared lexically scopedfor
; something like for let x in ...
add a 'with' keyword to the language which introduces a new scope, similar to ML's "let":
with x \= 1 in
...
endlet
Multiple variables can be introduced at once:
with x \= 1, y \= 2 in ...
Variables not declared with 'with' are verb-scoped as they are now
'with' variables that shadow already-known verb-scoped variables override the verb-scope
Add LetBegin and LetEnd opcodes to the language.
Make the environment have a width, and expand and contract as scopes are entered and exited.
Likewise, Names in Program should be scope delimited somehow
/ The values of the variables currently in scope, by their offset.
https://github.com/rdaum/moor/blob/9922628e2a0cc8e4b73952a3a0a4dd185aab1daf/crates/kernel/src/vm/activation.rs#L71