(defmacro deflax
  "Synonym for (def name (relax f & options)). Name should be a symbol.
  Documentation strings and attribute maps may be present in the same places as
  in defn. See (doc relax) for more info about specific options."
  {:added "0.6"
   :tag clojure.lang.Fn}
  [&form &env name f & options]
  (if (instance? clojure.lang.Symbol name)
    nil
    (throw (IllegalArgumentException. "First argument to deflax must be a symbol")))
  (let [[met opt] (parse-opts-defn options)]
    (list 'def (with-meta name met) (cons `relax (cons f opt)))))
