Abstract
Monads
have taken the world by storm, and are supported by do
-notation (at least in Haskell). Programmers are increasingly waking up to the usefulness and ubiquity of Applicatives
, but they have so far been hampered by the absence of supporting notation. In this paper we show how to re-use the very same do
-notation to work for Applicatives
as well, providing efficiency benefits for some types that are both Monad
and Applicative
, and syntactic convenience for those that are merely Applicative
. The result is fully implemented in GHC, and is in use at Facebook to make it easy to write highly-parallel queries in a distributed system.