[...] push a lambda expression (block) onto the stack ( -- block )
this is like :NONAME in ANS Forth, and a block is like an execution token (xt)
The easiest way to implement this is as a simple pointer into the text of the program.
? IF execute the block on top of the stack if the flag underneath it is non-zero (true) ( ... st flag block -- ... st ) [block sees ( st -- )]
the idiom "c$[a]?~[b]?" is equivalent to "c IF a ELSE b ENDIF". Note that the first block sees the duplicated flag when it executes and also must preserve the flag for the second block. Convenience was certainly sacrificed for simplicity of the interpreter here.
a..z push the address of one of the 26 variables onto the stack ( -- v )
; @ fetch contents of variable ( v -- a )
: ! store value into variable ( a v -- )
"[...]f:" is like ": f ... ;" in Forth
! EXECUTE the block on top of the stack ( st block -- st' )
"f;!" is like "f" in Forth if f is a colon definition
+,-,*,/ add, (a b -- a+b), subtract ( a b -- a-b ), multiply ( a b -- a*b ), divide ( a b -- a/b )
^ KEY reads one char from stdin and pushes it on the top of stack ( -- a )
ß (beta) flushes stdin and stdout and is said to be necessary when "we get input on the same console as the output"