<html>
<body>
I can't remember the exact terms anymore but here is the rough syntax of
&quot;these kinds of things&quot; from the first FLEX language ca. 1967.
* means iterate, + means 0 or 1.<br><br>
Compound ::=&nbsp;&nbsp;&nbsp; <b>begin</b> Body <b>end</b> | <b>`</b>
Body <b>'<br><br>
</b>Body&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ::= +{ Variable
List} Expression *{ (<b>;</b> | <b>,</b> ) Expression }<br><br>
These subsumed blocks and lists (and lambdas) and were treated as arrays,
so they could be indexed. The semantics treated &quot;;&quot; as a clear
top of stack operation, and &quot;,&quot; as a keep top of stack
operation. So the values would get pushed or popped as evaluation
proceeded. The compiler counted commas at each level of nesting so it
could always make the object out of the values on the stack.<br><br>
Pretty simple and useful, but I didn't think it led to great programming
particularly.<br><br>
Wrt Smalltalk (or any language), I think being able to judiciously extend
the syntax is a good idea (though often misused), but it needs to be done
at the same level as regular programming (so it can be used by any base
version of the language).<br><br>
Cheers,<br><br>
Alan</body>
</html>