Yampa, Arrows, and Robots

Speaker: Paul Hudak

When & Where:

Part I:  FRP basics, arrows, and Yampa. 12:30pm, Wednesday, Nov 13, 2002, Room 400 AKW
Part II: Using Yampa to program robots. 9:30am, Wednesday, Nov 20, 2002, Room 200 AKW


A hybrid system is a system containing both continuous and discrete components. For example, a mobile robot is a hybrid system: From a physical perspective, mobile robots have continuous components such as voltage-controlled motors, batteries, and range finders, as well as discrete components such as microprocessors, bumper switches, and digital communication. More importantly, from a logical perspective, they have continuous notions such as wheel speed, orientation, and distance from a wall, as well as discrete notions such as running into another object, receiving a message, or achieving a goal.

Functional reactive programming, or FRP, is a language-based paradigm for programming hybrid systems in a high-level, declarative way. The key ideas in FRP are its notions of behaviors (continuous, time-varying values) and events (time-ordered sequences of discrete values).

In robotic programming, performance is critical, and thus control over time- and space-leaks becomes paramount. Interestingly, the use of arrows (a generalization of monads) helps to ensure that common kinds of time- and space-leaks do not occur. Thus we have designed a language called Yampa as an instantiation of FRP that uses arrows to structure the design of functional reactive programs.

This talk will be given in two parts.

No previous experience with robots is expected, although a basic understanding of physics and calculus is assumed. No knowledge of arrows is required either, although a working knowledge of Haskell would be helpful. Pizza will be served.

This talk represents joint work with Antony Courtney, Henrik Nilsson, and John Peterson.