Hacker News new | ask | show | jobs
by edflsafoiewq 2794 days ago
This isn't really true.

1. Other languages have operators which can be written without brackets, x + y vs (+ x y).

2. Precedence rules allow ex. polynomial expressions to be written without brackets, 2 * x + y vs (+ (* 2 x) y).

3. Algol-like let-bindings or monadic-do-style variable-bindings that inject bindings into the containing block (as opposed to Lisp-style let-blocks where the new scope typically corresponds to a new block) use fewer brackets and keep nesting depth smaller.

    # 2 sets of brackets
    fun foo(x, y, z) {
        let w = x + y;
        let u = w + 2*z;
        let v = w - 2*z;
        u * v
    }

    # 13 sets of brackets
    (fun foo (x y z)
        (let ((w (+ x y))
              (u (+ w (* 2 z)))
              (v (- w (* 2 z))))
            (* u v)))
1 comments

It's pretty easy to embed an infix parser in Lisp if that's the only thing standing between you and happiness. e.g.:

http://www.flownet.com/gat/lisp/parcil.lisp

See:

http://www.flownet.com/gat/lisp/djbec.lisp

for some example code that uses this parser. Scroll down about half way and take a look at xpt-add and xpt-double.

It's even easier to embed a sublanguage that requires two sets of parens to write a list if that's what happens to make you happy.

    ((+ ((* 2 x)) y))
"I have this sublanguage..." is not a very interesting participant in the evidence that Lisp doesn't have lots of parens.
I can add arbitrary numbers of parens to your code too. I fail to see the point.