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.
%0 Book Section
%1 hudak2003arrows
%A Hudak, Paul
%A Courtney, Antony
%A Nilsson, Henrik
%A Peterson, John
%B Advanced Functional Programming: 4th International School, AFP 2002, Oxford, UK, August 19-24, 2002. Revised Lectures
%C Berlin
%D 2003
%E Jeuring, Johan
%E Jones, Simon L. Peyton
%I Springer
%K 00a71-theory-of-mathematical-modeling 00a72-general-methods-of-simulation 68n18-functional-programming-and-lambda-calculus 68u20-computational-simulation haskell yampa
%P 159--187
%R 10.1007/978-3-540-44833-4_6
%T Arrows, Robots, and Functional Reactive Programming
%U https://link.springer.com/chapter/10.1007/978-3-540-44833-4_6
%V 2638
%X 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.
%@ 978-3-540-44833-4
@inbook{hudak2003arrows,
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.},
added-at = {2023-09-14T02:44:06.000+0200},
address = {Berlin},
author = {Hudak, Paul and Courtney, Antony and Nilsson, Henrik and Peterson, John},
biburl = {https://www.bibsonomy.org/bibtex/2e1880e928306ac65fbbe2b05c2c0f831/gdmcbain},
booktitle = {Advanced Functional Programming: 4th International School, AFP 2002, Oxford, UK, August 19-24, 2002. Revised Lectures},
doi = {10.1007/978-3-540-44833-4_6},
editor = {Jeuring, Johan and Jones, Simon L. Peyton},
interhash = {aaa7cb66b46edcddb9eede8cb3e22f91},
intrahash = {e1880e928306ac65fbbe2b05c2c0f831},
isbn = {978-3-540-44833-4},
keywords = {00a71-theory-of-mathematical-modeling 00a72-general-methods-of-simulation 68n18-functional-programming-and-lambda-calculus 68u20-computational-simulation haskell yampa},
pages = {159--187},
publisher = {Springer},
series = {Lecture Notes in Computer Science},
timestamp = {2023-09-15T02:34:49.000+0200},
title = {Arrows, Robots, and Functional Reactive Programming},
url = {https://link.springer.com/chapter/10.1007/978-3-540-44833-4_6},
volume = 2638,
year = 2003
}