Categorical semantics for arrows

Journal of Functional Programming (Impact Factor: 0.78). 07/2009; 19(3-4):403-438. DOI: 10.1017/S0956796809007308
Source: DBLP

ABSTRACT Arrows are an extension of the well-established notion of a monad in functional programming languages. This article presents several examples and constructions, and develops
denotational semantics of arrows as monoids in categories of bifunctors C^op x C -> C. Observing similarities to monads -- which are monoids in categories of endofunctors C -> C
-- it then considers Eilenberg-Moore and Kleisli constructions for arrows. The latter yields
Freyd categories, mathematically formulating the folklore claim “arrows are Freyd categories”.


Available from: Chris Heunen, Jun 08, 2015
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: This paper contributes to the theory of coalgebraic, state-based modelling of components via two additions: a feedback operator in the form of a monoidal trace, and a three-dimensional string calculus for representing and manipulating composite component diagrams. The feedback operator on components is shown to satisfy the trace axioms by Joyal, Street and Verity. As a corollary, we appeal to the microcosm prin-ciple and derive a canonical traced monoidal structure on the category of resumptions. This generalises an observation by Abramsky, Haghverdi and Scott.
  • Source
    [Show abstract] [Hide abstract]
    ABSTRACT: There are different notions of computation, the most popular being monads, applicative functors, and arrows. In this article we show that these three notions can be seen as monoids in a monoidal category. We demonstrate that at this level of abstraction one can obtain useful results which can be instantiated to the different notions of computation. In particular, we show how free constructions and Cayley representations for monoids translate into useful constructions for monads, applicative functors, and arrows. Moreover, the uniform presentation of all three notions helps in the analysis of the relation between them.
  • [Show abstract] [Hide abstract]
    ABSTRACT: Effects are fundamental to programming languages. Even the lambda calculus has effects, and consequently the two famous evaluation strategies produce different semantics. As such, much research has been done to improve our understanding of effects. Since Moggi introduced monads for his computational lambda calculus, further generalizations have been designed to formalize increasingly complex computational effects, such as indexed monads followed by layered monads followed by parameterized monads. This succession prompted us to determine the most general formalization possible. In searching for this formalization we came across many surprises, such as the insufficiencies of arrows, as well as many unexpected insights, such as the importance of considering an effect as a small component of a whole system rather than just an isolated feature. In this paper we present our semantic formalization for producer effect systems, which we call a productor, and prove its maximal generality by focusing on only sequential composition of effectful computations, consequently guaranteeing that the existing monadic techniques are specializations of productors.
    Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages; 01/2013