Arrows, a generalization of monads, have gained quite a lot of traction in functional programming, since their introduction by Hughes. Over time, a better understanding of the core features of arrows has been developed. Even though the original presentation of arrows was already quite elegant, it nevertheless seemed that there could be an even smaller set of concepts sufficient to generate arrows.
The arrow calculus lays a strong claim to being the (small) set of concepts needed to understand arrows. This paper very carefully presents both classic arrows and the arrow calculus, as well as a bidirectional translation between them. The heart of the paper is the insightful analysis of the details of the arrow calculus and the properties of the translation. In particular, it shows some heretofore unnoticed redundancies in the definition of classic arrows.
The one topic that I found poorly explained was the benefit of having an equational correspondence, whereby translating from the arrow calculus into classic arrows and back is an identity on terms of the respective languages. Since this translation requires some beta reductions--as well as rewrites using the other laws--the advantages of this equational correspondence are unclear.
The presentation is quite pleasant, although primarily technical. The result is an important reference paper on arrows that simplifies earlier work. It will be mainly of interest to researchers who are already working on arrows.