As a brief prelude, my own interest in temporal recursion started with a discovery. A C++ framework that I was working on needed the ability to schedule method calls with strong temporal accuracy, so I added a real-time scheduler with the ability to schedule the execution of C++ method calls. Of course within a few days of using this new functionality the obvious idea to make the scheduling recursive struck. Such a simple and obvious idea but boy was I excited when I stumbled onto it.

So temporal recursion was born in early 2005, at least for me. Of course the idea was so obvious that others must be using the same technique, right? So I began trawling the archives. At which point I began to realise that the technique was far from common, indeed I struggled to find any references at all. After a lot of searching I discovered that Roger Dannenberg had used a similar technique in his CMU MIDI toolkit from the early 1990's, and in turn that he had borrowed the idea from Douglas Collinge's extremely interesting "Moxie" language (early 1980's). Neither Dannenberg nor Collinge used the term "temporal recursion" but the concept, albeit in a simplified form, was definitely there. James McCartney also made use of temporal recursion in his SuperCollider language from around 1996. Generally though the use of Temporal Recursion in practice, and in theory, appears to be quite rare.

What struck me more however, was that in the broader computer science literature I discovered even less material directly related to temporal recursion. There was a wealth of literature relating to co-routines and also to recursively timed events/tasks. However, although these techniques share similar properties to temporal recursion they differ in some important respects. One suggested reason for the rarity of temporal recursion in-the-wild, is that system designers prefer to offer more declarative temporal solutions. This certainly does appear to be the case, and aligns with other trends in CS, which may go some way towards explaining the lack of CS literature. Attempting to demonstrate the utility of a more imperative approach to time is a large motivation for writing this post.

Finally a shout out! If anyone knows of any other evidence of early work specifically related to the timed scheduling of recursive functions (methods, closures etc..), or the use of the term "temporal recursion", then please let me know! I would be particular grateful for any formal CS references.