Non-linear Pattern Matching in Clojure