M-expressions==LISP in "normal syntax"-kills LISP?

2 points by globalrev ↗ HN
http://en.wikipedia.org/wiki/M-expression

if i understand it right M-expressions would make it possible to have a LISP without parenthesis?

well what a lot of people love about LISP is macros and that code is data and data is code.

if someone rewrote LISP to have "normal" syntax and notation could you write

  defun sq(x)
      x*x
or somehing along those lines?

would that then make it very hard to do macros and do write programs that write programs?

3 comments

[ 4.1 ms ] story [ 9.8 ms ] thread
Why do you think of parentheses as something about LISP that needs to be fixed? What exactly is the problem?
well backwards notationa nd parenthesis is not how we normally write and talk and it is a turnoff for a lot of people.

i dont personally have a problem with it but id prefer the same language with normal syntax/notation.

Unless I'm missing something, M-expressions as expressed in the Wikipedia article are an alternate syntax for S-expressions; all the examples therein have the same number of parentheses/brackets in either syntax, so I don't think those M-expressions will save you many parentheses.

That said, you really only need parentheses (or other grouping operators) in situations where you don't know how many arguments there are; in most function calls, for instance, you know exactly how many parameters are needed, so the parentheses can be eliminated. This is effectively how Logo and Forth work.

However, eliminating parentheses in this manner means that the syntax tree interpretation of any given code depends on the function definitions currently in memory -- which is not the case with Lisp code, whose structure is explicit. I assume this would complicate a macro system.