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.