| |
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 embedded 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.
This paper is dedicated in memory of Edsger W. Dijkstra
for his influential insight that mathematical logic is and must be the
basis for sensible computer program construction.
@InProceedings{Hudak2003, author = "Paul Hudak and Antony Courtney and Henrik Nilsson and John Peterson", title = "Arrows, Robots, and Functional Reactive Programming", booktitle = "Summer School on Advanced Functional Programming 2002, Oxford University", year = 2003, volume = 2638, series = "Lecture Notes in Computer Science", pages = "159--187", publisher = "Springer-Verlag" }
Download
|