ross:
> On Thu, Sep 14, 2006 at 07:51:59PM +0200, Bertram Felgenhauer wrote:
> > It's a result of thinking about lazy evaluation, and
> > especially lazy patterns (and let bindings) for some time. A wiki article
> > that helped me a lot to understand these is
> > 
> >   http://www.haskell.org/hawiki/TyingTheKnot
> > 
> > I'd like to point out the trustList function there which uses the idea
> > of encoding the structure of a term and its actual values in different
> > arguments, i.e. a blueprint.
> 
> One view of your device is as separating the shape (blueprint) from the
> contents, e.g. one can split a finite map type
> 
>       data Map k a  = Node !Int k a (Map k a) (Map k a) | Leaf
> 
> into a pair of types
> 
>       data MapShape k = SNode !Int k (MapShape k) (MapShape k) | SLeaf
>       data MapData a = DNode a (MapData a) (MapData a) | DLeaf

...

Nice description.

Ross, I added a wiki page for this technique. Would you like to
either elaborate on the wiki, or include the text of your email to it?

    http://haskell.org/haskellwiki/Separating_shape_and_content

Cheers, 
  Don
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to