4 ms·
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 ex
by edflsafoiewq 8y 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)))
- lisper 8y agoIt'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 http://www.flownet.com/gat/lisp/parcil.lisp See: http://www.flownet.com/gat/lisp/djbec.lisp 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.
- edflsafoiewq 8y agoIt'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.
- lisper 8y agoI can add arbitrary numbers of parens to your code too. I fail to see the point.