WAT. Replace () with []. Seriously? This is the same sort of whinging that curly-bracket vs. significant whitespace folks go on about versus each other.
How about y'all just programmer-up, admit that your visual recognition skills are trainable, and just get used to the syntax? Work on this a little bit, you'll just stop noticing language transitions. Yeah, there'll be a bit of standard library and language recalibration, but those become minor speed bumps. And the win in versatility is awesome.
A Tale: back in grad school the folks in the AI lab were heavy-duty Lispers. One of them was also the department's Emacs maintainer and made significant contributions upstream IIRC. You could flash a paragraph-sized chunk of Lisp their way and they'd immediately tell you whether and where any mismatched parens were. Having the editor do paren matching was nice but largely optional for this crowd.
tl;dr: you get good at what you do, and doing is often easier than you think.
in my vimrc, which gains me all the ease-of-typing I really want. I don't think it'd really be worth anything as drastic as actually creating a new keyboard layout.
Then again, I don't use lisp all that often, so YMMV on that point.
I have (, [, and { on regular keys on my keyboard. Shifting the key yields the other pair: ), ], }. But since Emacs autocloses parens I rarely need to do this.
What keys did you swap if you don't mind me asking? I've been planning on doing this, but just haven't figured out the optimal location, especially for a laptop.
I drafted a long comment with examples of how you could, perhaps, seriously make s-expressions more readable by not using nested parens.. but decided to see if anyone else had given it a go, and found this: http://readable.sourceforge.net/
It includes both significant whitespace and a special in-fix notation so a factorial function could look like:
While I suspect most Lispers are shaking their heads and muttering, I actually like this. Seems to preserve the benefits of homoiconicity while reading more like natural language.
I would try it if there were a Clojure-compatible flavor (the {} conflicts with hashmap syntax) with a Leiningen plugin to convert it to regular Clojure when building. Kind of a CoffeeScript to Clojure's JS.
Edit:
Wait a sec, how does it know to prepend an open paren to the second line (the if) but not to the third line (body of the if)? Each one is indented. Does it have special, hardcoded knowledge of the 'if' form?
This looks a little problematic to me because the preprocessing isn't following an obvious rule. It brings to mind the big downside of CoffeeScript — the cleverness required to allow such natural-looking code can also lead to unexpected results in edge cases.
Ah, your wording was ambiguous. I thought you meant, in this situation:
...
X
Y
...
since Y is one indentation level deeper than X, prepend parens to Y. But you meant "since there exists Y such that Y is one indentation level deeper than X, prepend parens to X".
I think everyone comes up with some sort of alternative whitespace syntax when they first see a Lisp. I know I did. Unfortunately, you lose Lisp's most powerful property--homoiconicity.
> Since 2008 one programming language has seen an unprecedented growth in popularity despite its weird syntax: Objective-C. Why? Because to create applications for the App Store you have to code in Objective-C. Over 800.000 apps in the App Store are a testimony of the popularity of this language.
this is the best kind of april fools joke. i not only found myself believing it was real, but actually started to devil's advocate myself into thinking it was a good idea. weirder things have happened.
How about y'all just programmer-up, admit that your visual recognition skills are trainable, and just get used to the syntax? Work on this a little bit, you'll just stop noticing language transitions. Yeah, there'll be a bit of standard library and language recalibration, but those become minor speed bumps. And the win in versatility is awesome.
A Tale: back in grad school the folks in the AI lab were heavy-duty Lispers. One of them was also the department's Emacs maintainer and made significant contributions upstream IIRC. You could flash a paragraph-sized chunk of Lisp their way and they'd immediately tell you whether and where any mismatched parens were. Having the editor do paren matching was nice but largely optional for this crowd.
tl;dr: you get good at what you do, and doing is often easier than you think.