Have effect systems *completely* replaced transformers/MTL on your code?

@arybczak’s set of benchmarks mentioned in another post is also worth looking at - note the entries for:

  • countdown.1000.reference (ST) - 6.55 microseconds

and:

  • countdown.1000.cleff (IORef).shallow - 25.6 microseconds

  • countdown.1000.cleff (IORef).deep - 25.9 microseconds

If IORefs are the only reason why the IO type is being used, I would be interested in seeing if there’s much of a difference for STRef-based versions of countdown.1000.cleff - if that difference is trivial, the choice of using a pure, ST, or IORef-based approach would seem to be a matter of personal preference e.g. one isn’t happy with using something that has an implementation but no denotation (at least in Haskell).

Having said that, if this thread is any measure, it isn’t so much a choice between being effect or IO-based, but whether it’s monadic or ordinary (Haskell) syntax: over one-quarter century after it officially arrived in Haskell (v. 1.3), more that a few still find the monadic interface irritating to deal with…

1 Like