Go learn Clojure.
Go learn Clojure.
I understand if you don't want to take the time, but I would love it if you could you give an example of an abstraction that you can build in Closure that you would consider "easy to understand", yet which couldn't be built just with, say, anonymous functions, structs, arrays, and simple loops?
I'd say a specific example would be pmap. It's very difficult to parallelize code as simply as pmap does without functional programming constructs.
I'll dig in some more though. Thanks for the reference.
[1] https://github.com/clojure/clojure/blob/master/src/clj/cloju...
I could write a few simple routines in Go that certain get the job done without much code, but when I read the code I have to perform more mental translation from how the code is written to what my intent was.
In contrast, pmap or other constructs such as PLINQ get the same work done with less code that expresses my intent more clearly.
Macros allow things like core.async (like Go's channels), which is just a normal library; you didn't have to upgrade your Clojure version or anything.
Immutable datastructures make your life simpler because you're not worried about values mutating suddenly. Keeps you from cloning or locking an object. And undo is simpler: you don't destroy old state by mutating it, so you can just hold onto old versions.
Besides, I know lispers hate the idea, and it may not even be necessary, but uniting behind a single good-enough lisp like Clojure will reap more rewards then advocating for multiple (while still good) Scheme implementations.
It's an uphill battle to advocate for something that isn't the status quo, so I'm proud of the little victories.
edit: state of adoption and perceived coolness, not birth year. Coincidentally, Python 1.0 released in 1994 and Clojure 1.0 was released in 2009, and both had a couple years of unstable releases predating 1.0