Yes, which is why it is a newbie signal. A Lisp programmer with more than about three weeks of experience doesn't look at parentheses or try to match them up with each other. You know the function has ended because the next line of code has no indentation.
which suggests the use of a 'close all open parens' token to cut down on all the )))))) stuff at the end of a line, which can get really tedious, especially when editing in 'dumb' editors.
Someone should make a really good course to 'bridge' from being an experienced PHP, Perl, Java or Python programmer to that same level of competence using Clojure.
From my experience, the syntactic gap is wider than the semantic one. I suggest first, perhaps, translating Python into faux S-exprs (should be easy, given the indentation style). From there one might emphasize declarative vs. imperative, and functional as a subset of the former.
I'm glad I took the plunge, too. At first, it seemed like a really bad idea -- far too awkward and unfamiliar for the minor advantage of automatically inserting closing parens. I kept at it mainly out of an attraction to the novel and quirky for long enough to discover that its biggest advantages aren't from not having to type ")" -- they're for things like barf, slurp, splice, and the S-expression-aware kill-line.
Whenever I'm programming in a non-Lisp language, I really miss those kinds of editor features that are enabled by having an idiot-simple syntax.
-way- is not the problem here. The java.lang.Exception is. :-)
Throw specialized "Runtime Exceptions" would be the way to go. For example throw IllegalArgumentException runtime exception if function call receives inappropriate arguments.
You can also define your own specific (app-level) exception by proxying the RuntimeException or other relevant using the clojure's proxy macro.
Clojure has the highest percentage of "noob" users of any language. It's just 2 years old and everybody is pretty much wetting their feet with it just now.
22 comments
[ 4.2 ms ] story [ 71.4 ms ] threadhttp://java.ociweb.com/mark/clojure/article.html
Edit: There are other style problems with this article. Worst is probably this one:
My 'C' parser keeps telling me 'wrong bracket' though :)
The solution is to use the right tool for the job. Emacs has something called paredit-mode that relieves you of having to type the closing parens.
Yes! I can't do without it now. BTW somebody told me Paredit is a port of the old Interlisp structured editor.
There's also http://news.ycombinator.com/item?id=877386, if you haven't seen it.
Whenever I'm programming in a non-Lisp language, I really miss those kinds of editor features that are enabled by having an idiot-simple syntax.
The way your parens should flow:
The author doesn't take an idiomatic approach to programming in Clojure in most of his code snippets.[edit]
Throwing java.lang.Exception if a condition is not meat in your clojure functions? Don't do this either!!!
What's the proper way of doing that in clojure ?
You can also define your own specific (app-level) exception by proxying the RuntimeException or other relevant using the clojure's proxy macro.
Of course, that makes perfect sense.