On 4/13/07, Neil Mitchell <ndmitchell@gmail.com> wrote:
> Second, if Haskell should be more successful in the
> real world there has to be a way of demonstrating
> basic ideas of a big program to "customers". How
> would you do this? Everybody knows UML class
> diagrams, for example. In contrast, nobody knows
> about termgraphs or lambda *g*.

The UML is not executable, draw a pretty picture. No one knows UML,
everyone knows pretty pictures - most people can guess at the meaning
of UML because they know the meaning of pictures. As to reverse
engineering a diagram from code, that always leads to ugly (and
pointless) diagrams.

Speaking of pretty pictures, there's a tool from Business Objects called Gems, which is based on a "lazily evaluated, strictly-typed language called CAL, with many similarities to Haskell"

From http://labs.businessobjects.com/cal/default.asp
"These pieces of business logic, which we called "Gems" to give them a nice friendly face, are declarative 'functional' objects."

Although unrelated to UML, it provides a nice way of graphically representing functions, check it out:
http://resources.businessobjects.com/labs/cal/gem_cutter_manual.pdf

Or, if you prefer a (boring) video:
http://resources.businessobjects.com/labs/cal/gem_part_1_mov.zip

I haven't put much thought on that, but I think it's possible representing (de-sugared) Haskell functions using GraphML and relying on existing renderers for simplicity ... anyone tried that already ?

--
Ricardo Guimarães Herrmann
"You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete" - R. Buckminster Fuller