<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<item>
  <id>06076976</id>
  <dt>a</dt>
  <an>06076976</an>
  <augroup>
    <au>Paterson, Ross</au>
  </augroup>
  <ti>Constructing applicative functors.</ti>
  <so>Gibbons, Jeremy (ed.) et al., Mathematics of program construction. 11th international conference, MPC 2012, Madrid, Spain, June 25--27, 2012. Proceedings. Berlin: Springer (ISBN 978-3-642-31112-3/pbk). Lecture Notes in Computer Science 7342, 300-323 (2012).</so>
  <py>2012</py>
  <pu>Berlin: Springer</pu>
  <lagroup>
    <la>EN</la>
  </lagroup>
  <ccgroup>
  </ccgroup>
  <utgroup>
  </utgroup>
  <cigroup>
  </cigroup>
  <ligroup>
    <li>doi:10.1007/978-3-642-31113-0_15</li>
  </ligroup>
  <abgroup>
    <ab>Summary: Applicative functors define an interface to computation that is more general, and correspondingly weaker, than that of monads. First used in parser libraries, they are now seeing a wide range of applications. This paper sets out to explore the space of non-monadic applicative functors useful in programming. We work with a generalization, lax monoidal functors, and consider several methods of constructing useful functors of this type, just as transformers are used to construct computational monads. For example, coends, familiar to functional programmers as existential types, yield a range of useful applicative functors, including left Kan extensions. Other constructions are final fixed points, a limited sum construction, and a generalization of the semi-direct product of monoids. Implementations in Haskell are included where possible.</ab>
    <rv></rv>
  </abgroup>
</item>