The key points:
- I love C programming language tradition, but this time, I want no semicolons and curly braces. I want a syntax more Python/Ruby oriented.
- No indentation “hell”. Ok, I like Python, but indentation as part of the syntax, it’s not my preferred way.
- No command separator (no semicolon or something else) except new line or syntax. That is, I could write
if a < 1 a = 1
if a < 1
a = 1
Notice the use of end.
You CANNOT write (semicolon is not a separator):
if a < 1 a=1; b=2
You MUST write:
if a < 1
a = 1
b = 2
- No parenthesis around conditions (see the above if example).
for k in myarray
iterates over myarray indexes.
for k in myarray values
iterates over myarray values, directly. Range expression will be supported:
for k in 0..n
- Loops with continue, break. The main loop construction is the while.
- Functions as first class citizens.
- function keyword will be used to define anonymous functions. Maybe (to be discussed) I will use define keyword to define named functions.
- Function invocation with explicit parenthesis (forget Ruby convention, go for something like Python 3.x).
- Array access with  (forget Basic programming convention of using parenthesis).
- External variables. I learnt this from my CobolScript work: the linkage section is useful. An external variable is something injected at runtime (not a global one), and it can be provided in the call to the program. For example, print function could be an external one, so the calling program could redirect the print to the console, or to a buffer or to the web response. at will.
- Global variables should be declared explicitly. All non-declared variable is considered local (to the function, unit where it is used).
- Async constructions. I added this to CobolScript, and I found it useful. It’s something like the await/async in C# 5.0
- Run on the browser and on Node.js.
- Class support: to be discussed (the only key use case I have, is the game client coding for my game project).