Nathan - Specter has been an indispensable part of any 
Clojure/ClojureScript that I've started in the recent 1+ years. From my 
experience with it so far (and I'm definitely not using it to its full 
potential) it has had one killer feature and that is modifying a nested 3+ 
levels deep data structure that randomly contains vectors, maps, set, et 
al. For that use case it is a KILLER library - it's outright amazing (and I 
don't use that word lightly!). From that perspective, that would be two 
thumbs up for including it in Clojure proper (if it was up to me).

Here comes the BUT :). The more I've used Specter, the more I've come to 
the opinion that the less you need Specter, the simpler your data structure 
"architecture" (I generally dislike that word hence the quotes lol) tends 
to be. In a bad case scenario, Specter might encourage someone to come up 
with a very deeply nested data structure when a much shallower would do the 
job. Now, I definitely know and generally agree with "100 functions on 1 
data structure is better than 10 functions on 10 data structures" 
recommendation. But from my 4+ years experience with Clojure, over-nesting 
your data structures tends to become a little bit like OOP inheritance 
where you overspecialize the data and the details about your data. 
Especially in the domain of UI programming/React/ReactNative but also for 
general backend data-processing and transformation I've found it easier AND 
simpler to rely more on data "composition" rather than data "inheritance". 
In other words, keeping your data structures generally shallow, 2 or 
maximum 3 levels deep.

All that being said, there's many, many cases where the data you're 
presented with is set in stone either by the problem domain or another 
person before you (or your past self :) ). In those cases, Specter is 
ESSENTIAL. Places where I use it to great effect are random/unknown data 
structure processing for scraping/parsing HTML and processing various API 
responses where the data shape and structure is not under your control.

Thank you once again for developing this great library - I'm looking 
forward to everyone's responses in this thread!

On Tuesday, February 14, 2017 at 1:02:55 PM UTC-8, Nathan Marz wrote:
>
> One of the most common questions I get about Specter is whether it will 
> ever become part of Clojure core. I think it's an interesting proposal and 
> would like to see what the community and core team thinks.
>
> The primary reason for contributing would be that Specter makes Clojure a 
> stronger language. For a language that embraces simplicity, I've always 
> viewed the complexity of dealing with nested data structures a glaring 
> weakness of Clojure. The existing stuff in Clojure, like clojure.walk, 
> zippers, update-in, etc., just doesn't cut it. This problem is very common, 
> and Specter completely solves it with near-optimal performance.
>
> The main thing that makes me hesitate to suggest this is getting 
> bottlenecked on Clojure's dev process. However, Specter is very well 
> developed at this point so it doesn't need to move fast anymore.
>
> Please share your thoughts.
>

-- 
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