2019-08-22-records_of_functions

Posted on August 22, 2019

Dumb Workmanlike Effects

Posted on August 22, 2019

For the last several years in the Haskell community, effect systems have been a common topic of discussion and experimentation. The approaches have ranged from Free Monads to Eff, from ReaderT Env IO to “MTL-style”, and most recently, capabilities in a variety of forms.

I’ve had the good fortune to use a number of these approaches in professional Haskell application development; in my first project I used Free, then moved into a role on a team where the ReaderT Env IO pattern was in vogue. Then, I switched teams again, and inherited a codebase where part of it manages its effects with Freer Monads, part uses MTL-style, and part of it is just bare, nasty MonadIO.

In using all of these, there have been some that I’ve loathed, some that I’ve found tolerable, and some that have verged on good. Freer works pretty well, at the cost of