05-12-2015 | Daniel Winograd-Court: Extending Arrows for Safe, Efficient, and Expressive Functional Reactive Programming

EXTENDING ARROWS FOR SAFE, EFFICIENT, AND EXPRESSIVE FUNCTIONAL REACTIVE PROGRAMMING

Daniel Winograd-Court, PhD Candidate, Computer Science, Yale University
May 12, 2015, 11:00 am, NIA, Rm 101

Abstract
Functional Reactive Programming (FRP) is a programming model that facilitates designing real-time and reactive systems by utilizing signal functions that transform streams of inputs into streams of outputs. This design structure is beautifully captured with arrows, an abstraction from category theory. Arrows can easily describe the typical control flow of FRP systems, and their static nature makes them suitable for resource constrained embedded systems and amenable to aggressive optimizations. However, they are rarely used as a primary abstraction because of their limited ability to express dynamic structure and safe side effects.

This talk will present two ways to extend Arrowized FRP. First, an explanation of how one can express predictably dynamic programs by extending the classic arrow choice operation rather than relying on monadic switching operations, which can hinder static optimizations, will be discussed. Second, the notion of resource types, which allow one to safely add effects (memory manipulation, physical device interaction, and asynchronous computation) into arrowized programs will be described.

Bio
Daniel Winograd-Cort is a doctoral candidate in Computer Science at Yale University. He works with Paul Hudak on functional programming languages with specific emphasis on functional reactive programming. He is interested in crafting languages that are expressive and robust while still remaining concise and efficient. Daniel earned an MS and MPhil in Computer Science from Yale and a ScB in Math-Computer Science from Brown University. Read more about him at danwc.com.