\begin{code} {-# LANGUAGE QuasiQuotes, OverloadedStrings #-} import Text.Hamlet import Data.Text (Text, cons) import qualified Data.Text.Lazy.IO as L import Text.Blaze.Renderer.Text (renderHtml) data Person = Person { name :: String , age :: String , page :: PersonUrls , isMarried :: Bool , children :: [String] } data PersonUrls = Homepage | PersonPage Text renderUrls :: PersonUrls -> [(Text, Text)] -> Text renderUrls Homepage _ = "/" renderUrls (PersonPage name') _ = '/' `cons` name' footer :: HtmlUrl url footer = [hamlet|