The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
The Image Understanding Environment Program
IEEE Expert: Intelligent Systems and Their Applications
COLBERT: A Language for Reactive Control in Sapphira
KI '97 Proceedings of the 21st Annual German Conference on Artificial Intelligence: Advances in Artificial Intelligence
Karel the Robot
A survey on reactive programming
ACM Computing Surveys (CSUR)
Hi-index | 0.00 |
We have developed a domain specific language for the construction of robot controllers, Frob (functional ROBotics). The semantic basis for Frob is Functional Reactive Programming, or simply FRP, a purely functional model of continuous time, interactive systems. FRP is built around two basic abstractions: behaviors, values defined continuously in time, and events, discrete occurances in time. On this foundation, we have constructed abstractions specific to the domain of robotics. Frob adds yet another abstraction: the task, a basic unit of work defined by a continuous behavior and a terminating event. This paper examines two interrelated aspects of Frob. First, we study the design of systems based on FRP and how abstractions defined using FRP can capture essential domain-specific concepts for systems involving interaction over time. Second, we demonstrate an application of monads, used here to implement Frob tasks. By placing our task abstraction in a monadic framework, we are able to organize task semantics in a modular way, allowing new capabilities to be added without pervasive changes to the system. We present several robot control algorithms specified using Frob. These programs are clear, succinct, and modular, demonstrating the power of our approach.