Live data from Hacker News

What is the reason Lisp code is not written with closing parens on new lines?

groups.google.com

1–10 of 14 posts

Re: What is the reason Lisp code is not written with closing parens on new lines?

#2
I highly recommend 'paredit' mode for any Lispers having trouble getting used to the parens.

It takes a few days for the shortcuts (http://www.emacswiki.org/emacs/PareditCheatsheet) to become second nature, but then you never really thinkabout the parentheses again.

Re: What is the reason Lisp code is not written with closing parens on new lines?

#4
I'm not sure if that long thread included my two favorite reasons before it turned flame-y:

1. Lisp has a lot more parens than C or Java has curly brackets. The cost to vertical space is exaggerated. Otherwise you end up closing in a new line sometimes and not others, which quickly becomes distracting.

2. Somebody once said (anybody have the quote?) that C and java code looks blocky, while lisp code looks more fluid, like clay being moulded. That aesthetic speaks to me.

Re: What is the reason Lisp code is not written with closing parens on new lines?

#5
post #4

I'm not sure if that long thread included my two favorite reasons before it turned flame-y: 1. Lisp has a lot more parens than C or Java has curly brackets. The cost to vertical space is exaggerated. Otherwise you end up closing in a new line sometimes and not others, which quickly becomes distracting. 2. Somebody once said (anybody have the quote?) that C and java code looks blocky, while lisp code looks more fluid,…

I know I've read some seasoned Lisper insist that beyond a certain sized software project, good Lisp code will have fewer parentheses than good Java code has curly braces (owing supposedly to Lisp's potential conciseness). Of course, this could be an exaggeration or even a "no true Scotsman" argument. I haven't enough experience to know if the claim is plausible.

Re: What is the reason Lisp code is not written with closing parens on new lines?

#7
Indentation communicates most of what parenthesis do and therefore are mostly redundant as far as the (human) reader is concerned. Having them all bunched up at the end of the line is the most efficient way to (not have to) handle them. We can't get rid of them of course because although they aren't providing much benefit to the reader they are essential to the compiler/interpreter.

Re: What is the reason Lisp code is not written with closing parens on new lines?

#8
I write a fair amount of Scheme code. I don't like the one closing paren per line thing for a reason similar to why python and haskell choose indentation for grouping (try adding braces to them). Code written like that looks bigger than it really is and is quite tiring on my eyes.

Re: What is the reason Lisp code is not written with closing parens on new lines?

#9
post #5
post #4

I'm not sure if that long thread included my two favorite reasons before it turned flame-y: 1. Lisp has a lot more parens than C or Java has curly brackets. The cost to vertical space is exaggerated. Otherwise you end up closing in a new line sometimes and not others, which quickly becomes distracting. 2. Somebody once said (anybody have the quote?) that C and java code looks blocky, while lisp code looks more fluid,…

I know I've read some seasoned Lisper insist that beyond a certain sized software project, good Lisp code will have fewer parentheses than good Java code has curly braces (owing supposedly to Lisp's potential conciseness). Of course, this could be an exaggeration or even a "no true Scotsman" argument. I haven't enough experience to know if the claim is plausible.

I don't know if that is literally true (I did spend quite a few years being paid to write Lisp, followed by quite a few years writing Java) but I think once you have been using Lisp for a while with a good environment the parentheses certainly feature a lot less in how you visualize the code.

I am also a Scot - if that helps ;-)

Re: What is the reason Lisp code is not written with closing parens on new lines?

#10
post #5
post #4

I'm not sure if that long thread included my two favorite reasons before it turned flame-y: 1. Lisp has a lot more parens than C or Java has curly brackets. The cost to vertical space is exaggerated. Otherwise you end up closing in a new line sometimes and not others, which quickly becomes distracting. 2. Somebody once said (anybody have the quote?) that C and java code looks blocky, while lisp code looks more fluid,…

I know I've read some seasoned Lisper insist that beyond a certain sized software project, good Lisp code will have fewer parentheses than good Java code has curly braces (owing supposedly to Lisp's potential conciseness). Of course, this could be an exaggeration or even a "no true Scotsman" argument. I haven't enough experience to know if the claim is plausible.

Java only uses braces to denote blocks, whilst Lisp uses parenthesis for everything. Contrast:

    (if (= x 0)
      (foo x)
      (bar x))
And:

    if (x == 0) {
        foo(x);
    }
    else {
        bar(x);
    }
The Lisp code has 8 parenthesis, whilst the Java code only has 4 braces. However, the Java code also has 6 parenthesis and 2 semicolons, so in total the Lisp code only has 8 control flow tokens, whilst the equivalent Java has 12 (or 13, if you count the 'else').
Post reply on HN