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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/d/optout.