> Is this style common in Haskell Web development?
Not at all; the author is quite obviously inexperienced in using Haskell, and is using some weird old crufty library to create HTML.The two most common template libraries are Heist[1] and Hamlet[2]. Heist uses Rails/Django-style external template files, while Hamlet embeds markup directly into the Haskell source code using quasiquotation.
[1] http://snapframework.com/docs/tutorials/heist
[2] http://www.yesodweb.com/book/templates
Even if one wanted to represent markup as Haskell types, there's no reason it needs to be as ugly as in that example. A really basic version might be:
div [("id", "gallery")] $ do
div [("class", "screenshots")] mzero
ul [] $ do
li [] $ do
a [("href", "view.fcgi?file=" ++ first)] mzero