In the early days of LAML I used specialized table convenience functions that abstracted away both tr and td
In that way, it was not possible to affect the tr and td attributes
(define row list) (define cell list) (write-html '(pp prolog) (html (head (title "Table Examples")) (body (table 'border "1" (map (compose tr (map td)) (list (row (cell "This" 'rowspan "2") "is" "row" "1") (row "is" "row" "2") (row "This" "is" "row" "3") (row (cell "This is" 'colspan "2") "row" "4"))) ) )))