TY - CONF T1 - Directing JavaScript with arrows T2 - Proceedings of the 5th symposium on Dynamic languages Y1 - 2009 A1 - Khoo,Yit Phang A1 - Hicks, Michael W. A1 - Foster, Jeffrey S. A1 - Sazawal,Vibha KW - arrowlets KW - arrows KW - events KW - javascript KW - web programming AB - JavaScript programmers make extensive use of event-driven programming to help build 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 this paper, we present Arrowlets, a new JavaScript library that offers arrows to the everyday JavaScript programmer. We show how to use Arrowlets to construct a variety of state machines, including state machines that branch and loop. We also demonstrate how Arrowlets separate computation from composition with examples such as a drag-and-drop handler and a bubblesort animation. JA - Proceedings of the 5th symposium on Dynamic languages T3 - DLS '09 PB - ACM CY - New York, NY, USA SN - 978-1-60558-769-1 UR - http://doi.acm.org/10.1145/1640134.1640143 M3 - 10.1145/1640134.1640143 ER -