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

Reply via email to