These notes are a supplement to the documentation for M version 05/31/91 and will be included in the documentation of a later release. The news help topic now contains information related to M updates and bug fixes. Indexed Variables ----------------- Only variables can be indexed (in C, expressions can be indexed too). Indexed variables can only be used in expressions and basic assignments, such as A(:,1:2) = expr. ++ and -- can not be applied to an indexed variable. ++x(1); x(2:3) += 4; are not allowed. They should be. Also, y = x(2:3) = [ 1 2]; produces y = x, not y=[1 2]. Input Line Buffering -------------------- Since M buffers input lines in a circular queue of 60 lines with up to 128 characters per line, this means (1) if a function definition exceeds 60 lines, the source code will not be saved properly for listing via the `list' and `save' commands; (2) input lines containing numbers should not exceed 128 characters, since a number may get split across two input line buffers and will not be converted properly by sscanf() in M. Except within numeric constants, a backslash as the last character in a line causes the following newline to be ignored. This is most useful for specifying long row vectors without exceeding the 128 character limit discussed above. If the first character of a line is $ then M uses the remainder of the line as an argument to system() to execute a sub-shell. If the first character of a line is ! then M executes a history substitution siniliar to that in the Unix csh. Lines may be recalled by specifying their number as shown by `history' or by their starting string of characters. Eventually, more features of the Unix csh command recall and editing may be added to M. Control-C --------- Control-C interrupts M and restarts the parser. Depending on what was being executed, the workspace may be corrupted, so control-C should be used only in emergencies. Syntax Errors ------------- Most syntax errors produce the informative message `syntax error'. As the parser tries to recover from the error, if you don't receive the m> prompt after pressing Return, try entering `;' or `}' or control-C if all else fails. Error reporting and recovery may be improved in a later version.