Hacker News new | comments | show | ask | jobs | submit login

The second part of the article, titled "Why I tried Clojure then stopped" shows a very shallow understanding of the language. His point is that Clojure heavily uses vectors which aren't efficient when the collection changes size frequently. Clojure does in fact heavily use vector literals in code, but those aren't large enough for their performance characteristics to matter under most circumstances. The use of vectors over lists is to differentiate things that get executed from things that don't; lists are code and vectors are data.

I ran some tests with a function that did nothing but recur/drop on a sequence. There was no speed difference between a vector, a LazySeq (previously evaluated), a PersistentVector and a PersistentList with a million elements. I tried it with ten million and it was 400 times slower with both a LazySeq and a PersistentVector. Attempting to make a PersistentList from the 10M element LazySeq with 'into' resulted in running out of heap space. I did not try again with more heap space allocated.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact