mesto is a MEmory STOrage for ClojureScript, I wrote it because of my experience writing JS apps using Backbone.js.
http://github.com/piranha/mesto Idea is that you have atom (or atoms), containing all information you need to show to user. Storing this information directly in DOM is not a nice option, since it's slower, it's harder to access and overall is not a welcome practice. Of course, you could have such an atom yourself, so what mesto gives you? It gives you simple language for queries and events. Simple language is an extension of usual Clojure paths, used in get-in/assoc-in: [:items {:id 1}]. Here {:id 1} serves as a filter for list of :items. See readme (on Github) for better description. Events give you an ability to act when your data changes. Event binding system also supports filters (same as querying system) and puts actual bindings in the same data storage as your data lies in, so you can bind handlers on binding of handlers (sorry :). Anyway, this is it. I hope to use it as a basis for FRP system (I'm already experimenting with Flapjax, if you have something working written in Clojure please let me know). I also thought about using Datalog for querying atoms and subscribing to their changes, but honestly it's too unfamiliar complex and poorly documented for me to use it productively *and* improve (i.e. add events). Also it's too slow (minimal query takes 1-5 ms in *Clojure*, not even ClojureScript). Implementation of Datalog from Datomic is easier to understand, but then it's closed, so... Also the code of mesto could be written much better (as in quality/readability and performance), but I really wanted to get it done. I would really like to hear some feedback, so if you have any remarks, questions, or think it shouldn't be done like that, please reply to this message. Thank you for reading this email. -- Alexander -- 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