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.