In hiccup, you model html to be rendered as nested vectors and maps, such that
<span class="foo">bar</span>
becomes (html [:span {:class "foo"} "bar"])
Where this is a real win is when you realize that it's just data: (html [:ol
(for [x (range 1 4)]
[:li x])])
Lisps are well suited to model html.