On Wed, Mar 7, 2012 at 5:10 PM, Mark Engelberg <mark.engelb...@gmail.com> wrote:
> * introducing variables creates new indenting level, making code "creep to
> the right"

Mitigated by breaking functions into sub-functions (which is good
practice anyway).

> * as code creeps to the right, you need to have a lot more newlines

Then your code is too deeply nested and should be broken into
sub-functions. That's standard best practice across all languages.

> * The convention of using hyphens to separate words is hard to read

I disagree. I find camelCase far harder to read than hyphenated-names.

> * loop/recur is significantly less readable

I don't think it's "significantly" less readable but I do agree that
recur is a bit of a wart.

> * cond branches are sometimes written with the test and the answer on the
> same line, or when the test gets too long you have to write it with the test
> and answer on subsequent lines; this inconsistent formatting can make it
> hard to know in long blocks whether you are looking at the test or the
> answer

Don't write long blocks. Don't write complex conditions. Introduction
more sub-functions.

> * Interweavings of cond and let (a common pattern) end up ridiculously
> indented and hard to read

See above (and I don't agree it's a "common" pattern... perhaps an
anti-pattern?).

> * Decades worth of classic algorithms involving imperative manipulation of
> arrays look significantly uglier in Clojure

Yet many algorithms are significantly cleaner in a pure functional style...

> * Expression-oriented syntax (along with the indenting cost of using let)
> encourages people to pack far too much into one line rather than giving
> names to intermediate results.

Again, poor style. Break things into sub-functions.

> * DSLs are supposed to bring customized readable notation to many tasks, but
> by the time you include namespace prefixes and colons for all the keywords,
> DSLs don't really look that good.

Then those DSLs are not achieving their design goals. DSLs are a good
use case for :use or :require/:refer.

> * ... But when I read someone else's compact
> higher-order stuff, it's usually a nightmare to try to interpret what it is
> doing.

Really? I find the compaction outweighs the effort involved - as long
as the code is modular enough (see comments above).

> * And the number 1 problem with all Lisps is that when you look at Lisp
> code, it's a sea of sameness.  Function applications, Macros, Control
> constructs, bindings, data lookups, etc. all look exactly the same.

I actually find that to be a plus - there's no distracting variance
that artificially makes things "different" that don't need to be.

Syntax is very subjective. It's really good to here your pro-Python
thoughts tho'...
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to