One alternative is to use labelled fields.  In your example, if Html
were an algebraic datatype such as:

> data Html = Type1 { align = Align, ... }
>           | Type2 { align = Align, ... }
>           | ...

> data Align = Left | Right | Center

then instead of:

> h1 [align "right"] (stringToHtml "This is a Header")

you could write:

> h1 (stringToHtml "This is a Header" { align = Right})

or whatever, and you don't have the problem of dangling []'s, 
since stringToHtml would preesumably provide a default allignment,
and it is legal to have the same label in different constructors.

  -Paul


Reply via email to