Abstract
Functional reactive programming, or FRP, is a paradigm for
programming hybrid systems – i.e., systems containing a combination of
both continuous and discrete components – in a high-level, declarative
way. The key ideas in FRP are its notions of continuous, time-varying values, and time-ordered sequences of discrete events.
Yampa is an instantiation of FRP as a domain-specific language embed-
ded in Haskell. This paper describes Yampa in detail, and shows how
it can be used to program a particular kind of hybrid system: a mobile
robot. Because performance is critical in robotic programming, Yampa
uses arrows (a generalization of monads) to create a disciplined style of
programming with time-varying values that helps ensure that common
kinds of time- and space-leaks do not occur.
No previous experience with robots is expected of the reader, although a
basic understanding of physics and calculus is assumed. No knowledge of
arrows is required either, although we assume a good working knowledge
of Haskell.
Users
Please
log in to take part in the discussion (add own reviews or comments).