Tue May 4 16:57:49 EDT 2010


What I'm really looking for is unification: allow the same variable to
have different names on both sides of the abstraction.  Connect =
unify.  End of story.

How to abstract this in Haskell?

This seems like one of those `pearl' abstractions that keep people up
at night so it would surprise me if there isn't already a highly
abstract library for this.

So this brings us back to the initial idea of this morning: the real
issue is assignment / binding / unification..

Suppose e is a single assignment store.  How to express the assignment
of two variables (nodes)?

   connect a b e = e'
So, you can unify/connect an input and an output, two inputs, but not
two outputs.  This shows that Pd does not use unification but
something simpler as it does not support in-in connections.  

Allowing unification of outputs gives constraint programming, where
inputs/outputs are symmetric and processors are just constraints.