A few thoughts about Specter from someone new to it but who's already found it incredibly useful. I'm happy to be corrected on any points that I've misunderstood.
Clojure functions follow something like the Unix "do one thing and do it well" ideal. There are exceptions, but a lot of what's great about Clojure is how sensibly Clojure functions "do one thing well" in an integrated, flexible way. Specter doesn't do one thing, and do it well. It does a slew of things extremely well--using a bunch of "does one thing well" functions and macros. Not everything that's great and useful does just one thing, well. In Unix, you know, there's this command called 'bash'. It does a slew of things. On my system, I have another command 'lein repl', that doesn't just do one thing, either. Both of these allow one to do a slew of things using a bunch of "does one thing well" operators. So ... I think it's correct to say that Specter is a language. Not a fully general language, but a general-purpose language for Clojure data structure querying and manipulation. It's a language in at least the sense that SQL is a language. (Doesn't matter whether we call called it a DSL, a DGL ("domain general"), a CSV, or what.) I can't know why RH and the core team don't think Specter should be a part of core, but the fact that something is an entire language--something that's complex on its own and does more than a couple of things well, is a reason that someone might reasonably feel uncomfortable about adding it to clojure.core, or even about making it an official contrib library. It's a reason that someone might feel that Specter isn't Clojure-ey--because most Clojure functions don't do a slew of things, and we love that about it. I get it. I'm not expressing an opinion about whether Specter should be in Clojure.core or contrib. I'm trying to clarify why I think it's reasonable to feel it shoudn't (because it does a slew of things), and why I think it's reasonable to feel that it should (because of the slew of things that it does well and more easily and efficiently). (As for people not liking Specter's syntax: I don't think it's unreasonable to simply "feel" that something's syntax isn't sufficiently Clojurey. Call it "aesthetic judgement" if you want, but some things that are important for users can be difficult to spell out. However, discomfort with syntax doesn't seem like a good reason not to consider incorporating something into the core or the contrib system. Syntax can be revised, if that's what's needed, without harm to the underlying system. Someone who loves Specter's functionality but dislikes its syntax could even start their own project to give it a new "skin". Of course syntactic revisions shouldn't make the system harder to use overall.) -- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.