I have a library of functions that all take cfg parameter (and usually others) and return results in the IO monad.

It is sometimes useful to drop the config parameter by using a state-like monad..

I have found that I can wrap all my functions like so:

withLibrary cfg f = f cfg

stateF a b c d =