Hacker News new | ask | show | jobs
by cbp 4582 days ago
Clojure has other advantages which other lisps and go don't have such as immutable values and a prevalence of expressions (as opposed to statements), both of which give core.async certain features that go's implementation lacks.
2 comments

Statements are pretty rare in any of the Lisps since the basic syntactic form is the s-expression.

I believe immutable values are a result of programming style. A person can choose to use Clojure's Vars, Refs, Agents, and Atoms [1] even though Clojure tends to encourage a functional programming style. Clojure inherits the functional programming tradition from the larger Lisp family (as does Racket).

That said, Rich Hickey has a great of describing how to avoid unnecessary mutation - usually you want the next value so just make a new one rather than changing the existing one.

[1] http://clojure.org/vars

False.

Please go read up on modern scheme. particularly racket lang.

In many respects, Clojure is Racket, but on the JVM rather than native.

Racket is one other good example but he was responding to the "all other lisps" claim. Racket pretty unusual in many regards, so I think the Dwightian "False" was unnecessary here. Or anywhere, really.
Racket is a Scheme: Racket is still a dialect of Lisp and a descendant of Scheme. The tools developed by PLT will continue to support R5RS, R6RS, the old mzscheme environment, Typed Scheme, and more. At the same time, instead of having to say “PLT's main variant of Scheme,” programmers can now simply say “Racket” to refer to the specific descendant of Scheme that powers PLT's languages and libraries.

http://racket-lang.org/new-name.html

Indeed. Now name all the other Lisps and Schemes in wide use that are based on immutable data structures.
Clojure is a more opinionated language. It has a BDFL who has really stamped his mark on it. This is very much reflected in the standard library and the built-in syntax for the standard collections. Sure, nothing is stopping Racket from doing everything Clojure does, however defaults do matter. Once a language reaches critical mass, it becomes very difficult to change without breaking everything.
If you think Racket doesn't have a defacto unofficial BDFL, youve not met the core team, let alone Matthias Felleisen. Brilliant, nice, and loudly communicative folks all!

Racket has one of the most thoughtful, opininonated, and caring core dev groups of any language, bar none. Any implication otherwise comes from ignorance. :)