On Tue, Feb 3, 2009 at 2:06 PM, Thomas Davie <tom.davie@gmail.com> wrote:

On 3 Feb 2009, at 20:39, Conal Elliott wrote:

[Spin-off from the haskell-cafe discussion on functional/denotational GUI toolkits]

I've been wondering for a while now what a well-designed alternative to CSS could be, where well-designed would mean consistent, composable, orthogonal, functional, based on an elegantly compelling semantic model (denotational).

Can I start by replacing html please :)

I'd like to separate the document in roughly the same way as html and css attempt to, meaning I'd like a document description language, and a styling description language.

I can imagine the styling language having the meaning "function from documents onto geometry", but the document description language is harder.  Ideally what I'd like to do with it is to make it describe *only* the logical structure of the information being conveyed – sections, text, figures, tables (no, not for layout, for tabular data) etc.

This is easy to me.  Everything is content.  Sections, text, figures, tables -- these are all static content.  Functions are interactive content.  Numbers are content, as are lists of content, maybe content ...

The interesting part is how you display it.  In the simplest sense, a "style" is just a function Style a = a -> Geometry.  But work has been done, eg. with TVs, that have composition of content and composition of the display mirror each other.  I'm not totally satisfied with TVs.  For example, I think it's worth exploration describing how the content was composed, such that styling language maps compositions of content to compositions of geometry.

Content is not interesting.  The mapping from content to presentation is the important part.

Luke