Re: Needs Lisp a front-end?



pi_e_dra@xxxxxxxx wrote:
Mathematica language has FullForm for lisp like s-expression and
InputForm for easy to
read expressions.

Maxima has a particular language builts on Lisp.

I think Lisp needs a front-end, but on the other hand, is almost
imposible to
agree on a new language.

I've also followed the slower (but more polite) discussion of your proposal on the Maxima list.

As others have sarcastically replied, this issue of syntax has arisen from time to time over the last 48 years. It is true that for Lisp beginners who have learned only C or Java, S-expr notation is a hurdle. But there is a good reason it survives, and that has to do with one of the 5 language characteristics that give Lisp its power. Macros that operate on first-class program structure (compared to string manipulation in C, and a more-or-less prohibition on macros in Java).

Such a large part of Lisp's coding efficiency and expressivity derives from the ability to define macros that operate on the same data structure as the run-time language. But macros can be complex and steepen learning curve for beginners. (High plateaus have taller learning curves.) The only thing that keeps macros manageable in CL is the fact that the textual representation of the language is isomorphic (in the syntax of S-exprs) to the data structure representation of the language (as a tree of conses). Add another level of translation between C-style notation and S-expr notation (which are essentially equivalent, but require translation to and fro) and macros become much harder to manage. Whether you like or dislike S-expr notation, it's the only thing that works well with macros (IMO) and macros are much more important to CL than syntax.

There is a freely-usable infix module that modifies the Cl readtable to support `normal' Java-C-ish infix notation in Common Lisp. You can get it at the link below, and last time I checked it worked in the common CL implementations. (Nonetheless, you might want to customize it according to the needs on your preferred Lisp, but it does work out of the box.)

http://www-cgi.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/syntax/infix/0.html

But try using this module to write nontrivial Lisp systems that need macros, especially macros with multiple levels of backquotes, and you might change your opinion aboiut preferred notation.

Kantrowitz' infix module, or some customization if it, might indeed be quite useful where you want to accept infix notation from a user in an application, e.g. Maxima.
.