This new interface was not designed from scratch, and it shouldn't be compared to one's visions of the ``ideal'' language. Rather, it is intended to be easily used by an experienced Macaulay user after a short introduction, without requiring the user to learn new syntax on a command by command basis. This is our best effort so far at solving this puzzle; we welcome alternative ideas.
The internal design of this parser is slightly unfashionable, in keeping with Macaulay's design strategy of employing the simplest algorithms possible for basic system tasks. The design attempts to find middle ground between the twin horrors of languages devoid of syntax (favored by people who don't salt their food), and languages overdependent on parentheses (favored by people who oversalt their food). It is an experiment inspired by other ``toy'' languages such as Forth, Postscript, and Lisp, whose basic syntax can be implemented in one marathon session, but which nevertheless survive as workhorses side by side with conventional languages employing techniques from modern parser theory. The experiment posed is this: What are the possibilities of an interactive language where we replace the stack in stack-based languages (such as Forth and Postscript) with a token list combining operators and data, and use operator precedence to determine the order in which operators get to manipulate this list? In principle, such a design could support flow control, macros, and deferred parsing more flexibly than ``parse then execute'' interpreters. So far, we have implemented a rudimentary expression synax, and have hooked up Macaulay's commands and scripts, relying on the existing script processing facilities for flow control. This discussion is to give some idea of where we hope to take this design. In particular, we would like to rescue some ideas from APL, an ancient matrix-manipulation language that afforded an economy of expression and thought missing in modern languages. The dot mode will evolve slowly, as we use it ourselves in our day-to-day work, and hear from other users.