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.

Reply via email to