A preliminary assessment of how monads are used in Haskell

I Figueroa - Proceedings of the 21st Brazilian Symposium on …, 2017 - dl.acm.org
I Figueroa
Proceedings of the 21st Brazilian Symposium on Programming Languages, 2017dl.acm.org
Monads are a denotational approach to embed and reason about notions of computation
such as mutable state, I/O, exceptions, and many others. Even though monads are
technically language-agnostic, they are mostly associated to the Haskell language. Indeed,
one could argue that the use of monads is one of the defining characteristic of the Haskell
language. In practical terms, monadic programming in Haskell relies on the standard mtl
package library, which provides 8 notions of computation: identity, error, list, state, reader …
Monads are a denotational approach to embed and reason about notions of computation such as mutable state, I/O, exceptions, and many others. Even though monads are technically language-agnostic, they are mostly associated to the Haskell language. Indeed, one could argue that the use of monads is one of the defining characteristic of the Haskell language. In practical terms, monadic programming in Haskell relies on the standard mtl package library, which provides 8 notions of computation: identity, error, list, state, reader, writer, RWS, and continuations. Despite their widespread use, we are not aware of any empirical investigations regarding how developers use monads. In this paper we present preliminary results of an empirical study that quantitatively describe how monads are used in a sample of the Hackage repository. Our results show that around 25% of sampled modules depend on the mtl package, whereas only 1% depend on alternative, yet compatible implementations. Nevertheless, usage patterns for each specific monad remain similar both for mtl and alternatives. Regarding usage, the state monad is by far the most used one, although all of them are used. We also report on the distribution of packages that use mtl, regarding their category and stability level.
ACM Digital Library