Stack Diagrams

Most words in RETRO have a stack comment. These look like:

(-) (nn-n)

As with all comments, a stack comment begins with ( and should end with a ). There are two parts to the comment. On the left side of the - is what the word consumes. On the right is what it leaves.

RETRO uses a short notation, with one character per value taken or left. In general, the following symbols represent certain types of values.

| Notation            | Represents              | | ------------------- | ----------------------- | | b, n, m, o, x, y, z | generic numeric values  | | s                   | string                  | | v                   | variable                | | p, a                | pointers                | | q                   | quotation               | | d                   | dictionary header       | | f                   | `TRUE` or `FALSE` flag. |

In the case of something like (xyz-m), RETRO expects z to be on the top of the stack, with y below it and x below the y value. And after execution, a single value (m) will be left on the stack.

Words with no stack effect have a comment of (-)

For combinators (words consuming quotations), you can include a sub-comment indicating the expected stack effect of the quote. E.g.,

(q(-f)-)

Indicates a word consuming a quote and returning nothing. The quote should return a flag.