Directing javascript with arrows (functional pearl)

TitleDirecting javascript with arrows (functional pearl)
Publication TypeReports
Year of Publication2008
AuthorsKhoo YP, Hicks MW, Foster JS, Sazawal V
Series TitleTechnical Reports of the Computer Science Department
Date Published2008///

JavaScript, being a single-threaded language, makes extensive use of event-driven programming to enable responsive web applications. However, standard approaches to sequencing events are messy, and often lead to code that is difficult to understand and maintain. We have found that arrows, a generalization of monads, are an elegant solution to this problem. Arrows allow us to easily write asynchronous programs in small, modular units of code, and flexibly compose them in many different ways, while nicely abstracting the details of asynchronous program composition. In particular, we show how to use arrows to construct a variety of state machines, such as autoscrollers and drag-and-drop handlers.