   (if-let [hint (-> x meta :tag)]
     (isa? (eval hint) type)))
 
-(defn literal?
+(defn- literal?
   "True if x is a literal value that can be rendered as-is."
   [x]
   (and (not (uneval? x))

            ~(str "</" tag ">"))
      `(str "<" ~tag ~(compile-attrs attrs) ~(tag-end)))))

(defn compile-lit-tag
  "Compile an element when only the tag is literal."
  [tag [attrs & content :as element]]
  (let [[tag tag-attrs _] (parse-element [tag])]
    `(if (map? ~attrs)
       ~(if (or content (container-tags tag))
          `(str ~(str "<" tag) (render-attrs (merge ~tag-attrs ~attrs)) ">"
                ~@(compile-html content)
                ~(str "</" tag ">"))
          `(str ~(str "<" tag) (render-attrs (merge ~tag-attrs ~attrs))
                ~(tag-end)))
       ~(if (or element (container-tags tag))
          `(str ~(str "<" tag (render-attrs tag-attrs) ">")

           "</" tag ">")
      (str "<" tag (render-attrs attrs) (tag-end)))))

(defn- render-html
  "Render a Clojure data structure to a string of HTML."
  [data]
  (cond
