Electronic Proceedings in Theoretical Computer Science (Jun 2014)

Free Applicative Functors

  • Paolo Capriotti,
  • Ambrus Kaposi

DOI
https://doi.org/10.4204/EPTCS.153.2
Journal volume & issue
Vol. 153, no. Proc. MSFP 2014
pp. 2 – 30

Abstract

Read online

Applicative functors are a generalisation of monads. Both allow the expression of effectful computations into an otherwise pure language, like Haskell. Applicative functors are to be preferred to monads when the structure of a computation is fixed a priori. That makes it possible to perform certain kinds of static analysis on applicative values. We define a notion of free applicative functor, prove that it satisfies the appropriate laws, and that the construction is left adjoint to a suitable forgetful functor. We show how free applicative functors can be used to implement embedded DSLs which can be statically analysed.