My particular favourite is the Lamina library in clojure which takes the event-driven approach https://github.com/ztellman/lamina/wiki/Introduction
http://msdn.microsoft.com/en-us/library/vstudio/hh156513.asp...