   to be used with."
   [binding pattern]
   `(def ~binding (quote ~pattern))))
+
+#?(:clj
+(defmacro matcher
+  [& args]
+  (let [event `event#]
+    `(fn [~event]
+       ((map-matcher ~@args) ~event)))))
+
+#?(:clj
+(defmacro match
+  [event & args]
+  `((matcher ~@args) ~event)))

(ns ^{:doc "Syntactic sugar for map matching around `core.match`."}
  active.clojure.match
  (:require #?(:clj [clojure.core.match :refer [match]])
            #?(:clj [clojure.core.match.regex]))
  #?(:cljs
  (:require-macros [clojure.core.match :refer [match]])))

#?(:clj
(defmacro map-matcher

        message `message#]
    `(fn [~message]
       (let ~bindings
         (match/match ~message
                      ~@match-clauses+consequents))))))

#?(:clj
(defmacro defpattern
