   (and (not (uneval? x))
        (or (not (vector? x))
            (every? literal? x))))
+
+(defn- not-implicit-map?
+  "True if we can infer that x is not a map."
+  [x]
+  (or (and (seq? x) (= (first x) `for))
+      (not (uneval? x))
+      (not-hint? x Map)))
 
 (declare compile-html)
 


(defmethod compile-form `for
  [[_ bindings & body]]
  `(for ~bindings ~@(compile-html body)))

(defmethod compile-form :default
  [expr]

    (and (literal? tag) (map? attrs))
      (compile-lit-tag+attrs tag attrs content)
    ;; e.g. [:span #^String x]
    (and (literal? tag) (not-implicit-map? attrs))
      (compile-lit-tag+attrs tag {} (cons attrs content))
    ;; e.g. [:span x]
    (literal? tag)
