                              (next (next vvs)))
                       (seq ret))))]
     `(with-bindings (hash-map ~@(var-ize bindings)) ~@body)))
+
+(defmacro with-redefs
+  "The same as binding"
+  {:added "1.0"}
+  [bindings & body]
+  `(binding ~bindings ~@body))
 
 (defn deref
   "Also reader macro: @var/@atom/@delay. When applied to a var or atom,

       ([x y z & args] (or (spn x y z)
                           (some #(some % args) ps)))))))

(defmacro cond->
  "Takes an expression and a set of test/form pairs. Threads expr (via ->)
  through each form for which the corresponding test

      (finally
        (replace-bindings* existing-bindings)))))

(def
  ^{:doc "The same as with-bindings*"
    :arglists '([binding-map f & args])
    :added "1.0"}
  with-redefs-fn with-bindings*)

(defmacro with-bindings
  "Takes a map of Var/value pairs. Sets the vars to the corresponding values.
  Then executes body. Resets the vars back to the original
