PRINT is a function call, not a statement (mostly because if used as an
embedded scripting language there may not be anywhere to print to).
Comments use hash symbols rather than single quotes. This is partly because I wanted single quotes to have the same meaning as double quotes, as in Javacript.
Statements found in some old BASICs that are not available include CLS,
LOCATE, WHILE-WEND and so on.
There aren't any arrays, only hash tables, and they are indexed using
[] instead of ().
DIM is not needed (and not implemented) because of the way these hash
tables are implemented.
& is the string concatenation operator.
DATA is also a function, rather than a statement.
The operator @ operator is for references. The expression @identifier
converts the identifier to a string, so @ARRAY$ will be equivalent to
"ARRAY$".
It is useful, because functions like DATA() and MAP()
takes as a first parameter the name of the variable as a string. Using
the @ operatior makes it clear that the parameter is a reference to a
variable.
Uninitialised variables are initialised as "", which is treated as 0 in arithmetic.
Array indexes are case sensitive: people["John Doe"] and
people["john doe"] refer to two different variables, even though all
other variables are case insensitive (Person and person will refer
to the same variable).
There are some places where a call to mu_throw() could cause memory to
be leaked. Moral of the story: write your Musl programs in such a way that
mu_throw() need never be called.
REM is not supported for comments. I really ought to consider adding it.
Ideas for built-in functions that may be useful go in this section.
I need a function that does more or less the same as strtok(), but perhaps
reentrant. Don't know what to name it. TOKENIZE() maybe?
How about an Oracle-like DECODE() function (see
http://www.techonthenet.com/oracle/functions/decode.php for details)? I can give
mine a different name, like SWITCH() or SELECT()
I'd also like to have a feature to dump all the variables somewhere for debugging Musl programs. It should be an API function and a Built-in function.