Introduction to higher order categorical logic
Introduction to higher order categorical logic
Computational lambda-calculus and monads
Proceedings of the Fourth Annual Symposium on Logic in computer science
Science of Computer Programming - Special issue on mathematics of program construction
Deterministic, Error-Correcting Combinator Parsers
Advanced Functional Programming, Second International School-Tutorial Text
Journal of Functional Programming
Applicative programming with effects
Journal of Functional Programming
Asymptotic Improvement of Computations over Free Monads
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
A principled approach to programming with nested types in Haskell
Higher-Order and Symbolic Computation
FOSSACS'03/ETAPS'03 Proceedings of the 6th International conference on Foundations of Software Science and Computation Structures and joint European conference on Theory and practice of software
AMAST'10 Proceedings of the 13th international conference on Algebraic methodology and software technology
What is a Categorical Model of Arrows?
Electronic Notes in Theoretical Computer Science (ENTCS)
TFP'10 Proceedings of the 11th international conference on Trends in functional programming
Kan extensions for program optimisation or: art and dan explain an old trick
MPC'12 Proceedings of the 11th international conference on Mathematics of Program Construction
Hi-index | 0.00 |
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.