While I've looked at Specter several times, I have yet to use it in a
project for many of the same reasons that Rangel mentioned. Either my data
is shallow enough that clojure.core functions work just fine, or my data is
complex enough that I need cross-entity joins, and arbitrary clojure logic.
In short: I don't often need a path-based transformer, I need a query
engine for Clojure data.

Timothy

On Tue, Feb 14, 2017 at 2:37 PM, Rangel Spasov <raspa...@gmail.com> wrote:

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



-- 
“One of the main causes of the fall of the Roman Empire was that–lacking
zero–they had no way to indicate successful termination of their C
programs.”
(Robert Firth)

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