Yampa is a functional reactive language developed for the specific domain of robotic control. By combining both discrete events and time-varying signals, it incorporates the main types of actions and stimuli a robot likely encounters. To accomplish this, signals and events are represented by a signal function class, which is defined and implemented to be an instance of the Arrow class, which defines the operators associated with that abstraction.
The choice of an arrow as the underlying representation yields two benefits at the programmer's level. First, because of how the operators are defined, arrows do not suffer from the same space-leaks that prior implementations of Yampa did. Second, the patterns in which the operators combine arrows are intuitively similar to those found in circuit diagrams, and hence the correspondence between circuit programming of robots and arrow programming in Yampa is easier to appreciate.
We formally prove that the type SF (the basic signal function class used in Yampa), defined in [2] and implemented in [3], satisfies the arrow laws as defined in [5], for the purposes of showing that Yampa, which is built around the properties of this class, in fact is sound. Two of the nine laws are not satisfied in terms of strict equality; an evaluation function is defined under which those two laws do hold. As the two expressions involved in each law are not the same, some discussion is given as to which expression is more efficient, and its potential as an optimization for Yampa programs.