         (defn ~register-sym
           [~'name ~'def]
           (swap! ~registry-sym assoc ~'name ~'def))
+        (defn ~unregister-sym
+          [~'name]
+          (swap! ~registry-sym dissoc ~'name))
         (defn ~registered-sym
           []
           (deref ~registry-sym))

  ([name env]
   (let [registry-sym   (symbol (str "+" name "-registry+"))
         register-sym   (symbol (str "register-" name "!"))
         registered-sym (symbol (str "registered-" (plural name)))
         reset-sym      (symbol (str "reset-registered-"
                                     (plural name) "!"))

   will result in the following functions to be defined:

   (defn register-command! [name def] ...)
   (defn unregister-command! [name] ...)
   (defn registered-commands [] ...)
   (defn reset-registered-commands! [] ...)
   (defn resolve-command [name] ...)."
