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).