Cool on the clojure API. Functional programing really fits with this sort of thing. Does your implementation limit you to the JVM?
Why take that path?
I get your point about global mutable state, but I do not see how you have done anything more than shuffle the complexity around
Being dependant on software like the JVM makes me very reluctant to investigate further. The JVM is not involved in anything I use, I do not think i want it.