Clochure — A Better Clojure
clochure.org
clochure.org
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.
It's not serious: this was an april fools' day joke from earlier this year.
[] being easier to type than () is a decent point, though. I wonder if it'd be worth remapping your keyboard to swap them if you write a lot of lisp.
edit: and it's excellent, I recommend it to all
- the | \ key next to ~ and left arrow is (
- { [ becomes [
- } ] becomes {
function LispOpts()
inoremap [ (
inoremap ] )
inoremap ( [
inoremap ) ]
endfunction
autocmd FileType scheme call LispOpts()
autocmd FileType lisp call LispOpts()
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.
It includes both significant whitespace and a special in-fix notation so a factorial function could look like:
define factorial(n)
if {n <= 1}
1
{n * factorial{n - 1}}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.
(if condition
(1)
(else-clause))
trying to call 1 as a function, which is an error. ...
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".Previous Discussion: https://news.ycombinator.com/item?id=5473135
I laughed so hard