I have an alternative HTML library if you are interested... it uses an intermediate representation (a DOM style model) and defines the type ShowDOM = DOM -> DOM , allowing efficent concatination using function composition, finally a layer on top of this using the type ShowDOM -> (a,ShowDOM), instanciating a Monad allows monadic composition of html pages - there is also some static type checking done by creating the types: newtype HtmlFragment = HtmlFragment (ShowDOM -> (a,ShowDOM)) newtype HtmlTableFragment = HtmlTableFragment (ShowDOM -> (a,ShowDOM)) etc... this allows you to compose HTML as in the following example attrTable [MkAttribute ("cellspacing","0")] ( do htmlTR (attrTD [MkAttribute ("colspan","2")] $ htmlText "Test Cell 1")) htmlTR ( do htmlTD (htmlText "Cell 2 (Left)") htmlTD (htmlText "Cell 3 (Right)"))) If you (or anyone) are interested let me know ... Keean Schupke Department of Electrical & Electronic Engineering Imperial College - London. -----Original Message----- From: glasgow-haskell-users-admin@haskell.org [mailto:glasgow-haskell-users-admin@haskell.org]On Behalf Of Albert Lai Sent: 26 June 2002 05:52 To: glasgow-haskell-users@haskell.org Subject: Re: Andy Gill's Html library "Thomas L. Bevan" <tom@regex.com.au> writes:
Can someone explain the reasoning behind using a function to describe a Table rather than just a list of lists?
Just my feeling, but perhaps it is essentially the same reason why ShowS is String -> String rather than String, so that concatenation becomes efficient? _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users