I’ve spent some time over Christmas doing a lot more reading about reactive functional programming. I’ve always found the idea of representing input, such as keyboard events, as a lazy stream of incoming values fascinating. I first read about it in 1985 when the Oxford Programming Research Group was looking at writing an operating system using LispKit lisp, a lazy lisp dialect, though it seemed to require a notion of non-deterministic merge in order to allow the equivalent of a WaitAny or select. Conal Elliott’s blog and the Reactive library on which he is working contain some fascinating insighs into this world. He has a large collection of interesting papers.
Some of the good ones, out of those I have read so far, include:
Declarative Event-Oriented Programming which shows the motivation for reactibve functional programming, in particular the composability of the definitions.
Functional Reactive Animation documents the implementation of Fran, alibrary he implemented with Paul Hudak
Simply efficient functional reactivity which is the new formalisation of functional reactivity that underlies Reactive.