       (render-tag (eval element))
     (and (literal? tag) (map? attrs))
       (compile-partial tag attrs content)
-    (and (literal? tag) (not (unknown? attrs)))
+    (and (literal? tag) (or (not (uneval? attrs)) (not-hint? attrs Map)))
       (compile-partial tag {} (cons attrs content))
     :else
       `(render-tag

  "Renders a tree of vectors into a string of HTML. Pre-compiles where
  possible."
  (:use clojure.contrib.def
        clojure.contrib.java-utils))

(defn escape-html
  "Change special characters into HTML character entities."

    (seq? data) (apply str (map render-html data))
    :else (as-str data)))

(defn- not-hint?
  "True if x is not hinted to be the supplied type."
  [x type]
  (if-let [hint (-> x meta :tag)]
    (not (isa? (eval hint) type))))

(defn- uneval?
  "True if x is an unevaluated form or symbol."
  [x]
  (or (symbol? x)
      (and (seq? x)
