> > Responsible adults sometimes needs to access and modify deeply nested data > structures
So far, my experience has been that it is almost always better to build a pair of flattening and unflattening transforms on the data. Especially since you frequently want only one flattening, but potentially many un-flattenings. The "unflattened" form (aka "documents") is usually an end-point where data goes to die; assuming it isn't immediately displayed on the screen. However, having said that, path-dependent / context-sensitive query is a very rich and interesting space that does have meaningful utility, especially in the context of graph-like datasets. This is especially true when combined with some kind of algebra for unioning/intersecting/etc. I'm also interested in this sort of thing for programmable user-interface use cases: Think text editors with multiple-cursors. I think experimentation is in order > Agreed. Here's some starting points for pre-hammock reading/viewing materials: *Tree Traversal * - XPath: https://www.w3.org/TR/xpath/ - CSS: https://www.w3.org/TR/css3-selectors/ *Richer Tree Querying* - XQuery: https://www.w3.org/TR/xquery/ - jQuery: https://api.jquery.com *Second-Class "Generalized References" (nee "L-values")* - Common Lisp: http://www.lispworks.com/documentation/lw50/CLHS/Body/05_a.htm - C/C++: http://eli.thegreenplace.net/2011/12/15/understanding-lvalues-and-rvalues-in-c-and-c *Lenses in Other Languages* - Haskell: https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation (great overview of key concepts!) - Racket: https://docs.racket-lang.org/lens/index.html *Graph Querying* - Neo4j Cypher: https://neo4j.com/developer/cypher-query-language/ - TinkerPop Gremlin: https://tinkerpop.apache.org/gremlin.html -- 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.