4 ms·
So thankful to be programming in Clojure the past few years. Thank you, Clojure Team, for all you do! My favorite things about using Clojure: 1. Runs on the
by silver-arrow 5y ago
So thankful to be programming in Clojure the past few years. Thank you, Clojure Team, for all you do!
My favorite things about using Clojure:
1. Runs on the JVM. Battle tested, tons of libraries, and well engineered.
2. Immutable Data Structures. I wouldn't want to live without this safety ever again.
3. LISP syntax - so simple to remember and just basically code functions! I also find reading Clojure code very simple vs other procedural languages.
4. REPL development.
5. Transducers - not unique to Clojure, but just love them so listed it.
Great language.
- haolez 5y agoAbout the syntax. I tend to prefer Scheme because (, [ and { mean the same thing, whether in Clojure they are different constructs. How do you feel about this minor point?
- silver-arrow 5y agoI guess for me, I like having them be different things, like they are in Clojure. But that could certainly be because Clojure is my first and only exposure to a LISP type syntax.
- canadianfella 5y ago
- gmfawcett 5y ago> (, [ and { mean the same thing... That's not a feature of Scheme. It must be a feature of the implementation you use. (Which one?) E.g. in R7RS, [ ] and { } are explicitly reserved for future language extensions. https://standards.scheme.org/official/r7rs.pdf https://standards.scheme.org/official/r7rs.pdf
- haolez 5y agoMy last Lisp project was using Racket, but when it was called PLT Scheme. It's been a long time since then :)
- gmfawcett 5y agoIt seems like only yesterday... but you're right, we are old. :) I was never a big PLT user -- Chicken Scheme for life! -- but they have always been about pushing language boundaries, I'm not surprised to hear that they supported an extended syntax.
- freshhawk 5y agoI think the clojure syntax, with those symbols differentiated, is a pretty great choice. The choice of default meanings is good too, lists/application, indexed sequences and k/v mappings are useful widely used primitive constructs (clojure makes sets (the math meaning, unordered collection, no dupes) with #{} which is handy). It cleans up the code nicely, having these literals, and now I find non-clojure styles to be a bit annoying to read with the extra noise from contructor function calls. And when describing data/DSLs using these literals people generally carry the general meanings over, so things can be a bit more intuitive. And in a lot of places just using ('s and ['s in a way that makes it easy to disambiguate them when reading some DSL or literal value also makes for nicer reading of code (just in terms of a bit less mental parsing effort). I'm the type to not be immediately a fan of extra syntax added to a lisp, but I've been convinced that edn notation is pretty wonderful and I've been converted.
- edgyquant 5y agoWhen you say immutable data structures, do you mean all lisp data structures are immutable? It’s been awhile since I’ve worked with lisp (and that was implementing a MAL not actually writing lisp.)
- skwog 5y agoClojure data structures are immutable [1], core to its principles. 1 https://clojure.org/reference/data_structures https://clojure.org/reference/data_structures
- edgyquant 5y agoAh okay that’s cool then. I thought you were calling out some low level implementation detail of lisp I had overlooked. I’m trying to build a lisp as the intermediate of my new toy programming language. So I wanna get that right.
- kimi 5y agoNo it's a Clojure thing. Other lisps may vary.