As I try to reconcile my ancient past in writing common lisp code with a clojure learning exercise, I wonder whether clojure philosophy redefines the notion of an s-expression or whether it just adds vectors and maps to s-expressions in without trying to define what an s-expression is.
The question came up as I was looking for a certain capability in clojure libraries. Back in the day when lisps had only parenthesized collection types, there were lisp libraries (whose names I've long since forgotten) that would allow pattern matching of s-expressions, so that you could describe a pattern, match it to some tree, pick up matches and continue to match some more. Sort of like java.util.Matcher.find(). However with every clojure program (and program output) being a huge set of lists, vectors, and maps I was looking for an s-exp matcher that would allow pattern expressions of and matching against paths of combinations of these data structures. Sort of like enlive/select can traverse a nasty list/vector/map output of enlive/html-resource with predicates that will match a sequence of nodes in the web page. (Only I don't think enlive/select returns matcher state that allows continuation from where you left off, maybe it does, and of course it's html oriented). Looking at the clojure.walk and clojure.zip stuff, I don't see anything other than low level tools for certain kinds of traversals. What libraries are there for higher level "reach in and grab patterns of data" abstractions that will work against a tree of lists/vectors/maps (and preferably any other walkable data structure in clojure)? Looking for suggestions, and whatever philosophy there is about s-expressions in clojure like reader environments. If I wanted lists, vectors, and maps with no zen, I'd be using python ;-) Thanks! -- -- 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/groups/opt_out.