Gregg, agreed. But as an aside, as an external library, like core.async, Specter is a shining example of why Clojure (and lisp) is such an awesome platform. The fact that Nathan was able to even implement this functionality, in some places even more performant than core idioms, imho proves that Clojure has power well beyond what the core team can or will provide to users. That's a good sell for both Clojure as a platform and for Specter as a library.
On Sat, Mar 4, 2017 at 5:39 PM Gregg Reynolds <d...@mobileink.com> wrote: > > > On Mar 4, 2017 3:52 PM, "Gregg Reynolds" <d...@mobileink.com> wrote: > > > > On Mar 3, 2017 6:27 PM, "John Newman" <john...@gmail.com> wrote: > > I think the path navigator DSL feels slightly un-Clojurey. But other than > that, I think Specter is pure magic and Nathan is right that editing deeply > nested data structures in Clojure is a point of deficiency, especially for > people coming from mutable languages/data structures. To that extent, I > think Specter does a yeoman's job of filling that "missing piece" of > Clojure. Again, it's only the navigator DSL that feels a little un-Clojurey > to me. > > > +1. the functionality is great, but the api imho is not just a little > unclojurish, it's massively unclojurish. MAP-VALS? END? No way, for me at > least. > > Specter is a specific solution to a general problem. all such solutions > will probably boil down to more or less the same thing, > implementation-wise. but the interface makes all the diff. for example, > it's easy to imagine a more xsl-like (or even css-like) syntax with the > same functionality. > > > more to the point, imho everything specter is doing could be expressed in > a more naturally clojure idiom. > > for example, let's take the first example at , > https://github.com/nathanmarz/specter/blob/master/README.md, which > amounts to "apply f to every value in a map structure, at every level". > this would be a good thing to have. essentially, update-in with wildcards. > sth like (update-in-v* m even? inc) would do quite nicely, i think. > update-in-v means map values (as opposed to update-in-k) the * makes it > recursive, even? is the predicate that selects values, inc is the fn to > apply. > > -- > 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. > -- 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.