Simple example of a finite state machine DSL in Clojure