4th April 2008, 02:27 pm
I submitted a paper Simply efficient functional reactivity to ICFP 2008.
Abstract:
Functional reactive programming (FRP) has simple and powerful semantics, but has resisted efficient implementation. In particular, most past implementations have used demand-driven sampling, which accommodates FRP’s continuous time semantics and fits well with the nature of functional programming. Consequently, values are wastefully recomputed even when inputs don’t change, and reaction latency can be as high as the sampling period.
This paper presents a way to implement FRP that combines data- and demand-driven evaluation, in which values are recomputed only when necessary, and reactions are nearly instantaneous. The implementation is rooted in a new simple formulation of FRP and its semantics and so is easy to understand and reason about.
On the road to efficiency and simplicity, we’ll meet some old friends (monoids, functors, applicative functors, monads, morphisms, and improving values) and make some new friends (functional future values, reactive normal form, and concurrent “unambiguous choice”).
Tags:
applicative functors,
continuous,
discrete,
events,
FRP,
functional reactive programming,
functors,
future values,
icfp,
implementation,
joinMaybes,
monads,
monoids,
morphisms,
multi-threading,
normal form,
paper,
reactive behaviors,
reactive values,
semantics,
time,
type classes,
type composition |
29 Comments
11th September 2006, 09:26 am
(This is an edited version of a post made on April 11 that somehow became inaccessible from my main blog page.)
I have a draft paper called “Functional Programming by Interacting with Concrete Values”. I’m very excited about this research direction as a way to let people program without turning them into programmers. A concrete form of this goal is enable artists to make and share their own software tools (parameterized image effects), while staying in an artistic creative mode.
An excerpt from the introduction:
Suppose users of interactive programs could also create such programs with a simple extension of their current style of interaction. First, such a development would enable many more people to create and share computational content. Second, it would allow this content to be created without imposing the abstract, linguistic mode of creativity. This freedom may give birth to new kinds of programs whose creation is nurtured by a concrete and visual environment.
Comments please (related work, ideas, typos, unclear bits, etc)!
Edit 2008-04-17: The paper didn’t get accepted in 2006. Thanks to very helpful review comments, and a lot of rewriting, the paper did get accepted in 2007, under the title “Tangible functional programming”.