Hacker News new | ask | show | jobs
by chr1 4406 days ago
The weird thing about Lisp syntax is that people try to find all kinds of justifications why not having infix syntax is ok.

The fact that arithmetic can be written in weird form in other languages too isn't very interesting.

4 comments

There's really just one justification, but it really is an interesting one: It gets the logical structure of the code in line with its lexical structure.

One reason this is neat is that it facilitates language extensibility to a radical degree. LISP has its macros, FORTH has its compiling words. Languages that allow infix syntax have tried to come up with something similar, but I haven't personally used one that I thought was particularly successful.

The weird thing is that some people feel that they need to find all kinds of justifications for why not having an infix syntax is OK.

Arithmetic in Lisp-style is excellent and easy to read. Thing is that programming languages infix math is ridiculously bad compared to what I can do with paper and pencil. It's really just a really bad form of imitation and to me that irks me way more than just doing it in Lisp. Math written in PL:s is hard to read in general and I'd love to see an Emacs package that lets you show an inline picture as you mark a mathematical expression of LaTeX rendering it as 'regular' math.

AUCTeX has support for displaying inline pictures of LaTeX math expressions in Emacs. I just checked and it even says so on the homepage ;) http://www.gnu.org/software/auctex/
I know :)

I meant "take Java math code and convert into LaTeX, display inline", the first part is the missing one!

There are a lot of reasons to prefer RPN over infix syntax and why Lisp has chosen to adopt this notation. Although, I agree with the critiques of the article, it's not really saying much.
RPN is postfix notation. You add 1 and 2 using "1 2 +"

Lisp is prefix notation, which is just the opposite.

I just realized that makes Lisp "Polish Notation".

I'm sure that opens up some really horrible jokes.

Not quite. If you drop Lisp's variable-arity operators, that enables you to drop the parenthesis. If you drop the parenthesis, that gives you Polish notation.

For example:

  Lisp:  (* (+ 1 2 3) (- 4 5) )

  Polish: * + + 1 2 3 - 4 5
To me, it opened up a really horrible thought: Polish plus Hungarian.

Lisp with Hungarian names (shudder).

You're correct, I brain farted.
What's your justification for why having infix syntax is OK?
"People are used to it, from years of education."

It's a strong argument. Whether it is sufficient depends on what it is being weighed against.