This is really great, especially the tie-in with concrete mathematical concepts.  It does, however, make me wonder if this pattern could be expanded upon to handle a "distributed" observer pattern, where remote clients (identified by a URI, not a function pointer) can subscribe to events occurring another machine.  I've worked on projects doing just this in the past (via SOAP/HTTP), but it's a lot of plumbing.  WCF does support the notion of callbacks, but to say their approach is intuitive is a bit of a misnomer (quite ugly if you ask me).

 

Thoughts?